2012-04-04 76 views
1

之前认识了一个句号我有一个看起来对这个词“不”,然后经过一个字的方法,但如果我有一个句子,如:PHP一句话

这是件好事。不好

由于某些原因“而不是”会不会拿起由于句号是在它面前,任何人都知道如何解决这个问题,该代码如下

preg_match_all("/(?<=\b not\b)\b good\b/i", $find, $matches); 
+1

什么是'$ poswords'? – zerkms 2012-04-04 21:14:56

+0

数据库中积极词语的列表 – linda 2012-04-04 21:15:24

+1

我们需要猜测它?请用正则表达式中的'$ poswords'替换为不能正常工作的实际值 – zerkms 2012-04-04 21:16:16

回答

2

\b匹配单词边界,它是两个字符之间的位置,其中一个是单词字符,另一个不是。单词字符是[a-zA-Z0-9]。您在not之前的空格之前匹配单词边界,并且没有字边界,因为该字符串与上一个字符一样具有完全停止。

也就是说,全站和空间之间没有词边界,因为既不是也是一个单词字符。

更多信息:http://www.regular-expressions.info/wordboundaries.html

+0

确实没有办法解决它吗? – linda 2012-04-04 21:31:58

+1

它只是意味着你必须准确找到你想要找的东西。如果您想将'not'分隔为单词,请使用该表达式中没有空格的'\ bnot \ b'。在'n'之前和't'之后,这将匹配'not'与非单词字符。这可能是一个完整的,空间,哈希标志... – 2012-04-04 21:34:24

+0

哦问题解决了然后 – linda 2012-04-04 21:39:37