使正则表达式更具体 - 只选择“VB”,而不是变体(“VB%”)

时间:2012-02-14 22:24:41

标签: php regex

考虑以下字符串和正则表达式:

$string= "just/RB convinced/VBN closing/VBG 10dma/NN need/VBN see/VB";
echo preg_replace("/(\w+)\/(JJ|RB|VB)/", "not$1/$2", $tweet);

我想将“not”连接到以/ JJ,/ RB或/ VB结尾的每个单词。但是,正则表达式还捕获/ VB:/ VBN和/ VBG上的变体。输出是

notjust/RB notconvinced/VBN notclosing/VBG 10dma/NN notneed/VBN notsee/VB

但是,预期的输出是:

notjust/RB convinced/VBN closing/VBG 10dma/NN need/VBN notsee/VB

如何阻止正则表达式获取变体?

1 个答案:

答案 0 :(得分:5)

使用\b word boundary

$string= "just/RB convinced/VBN closing/VBG 10dma/NN need/VBN see/VB";
echo preg_replace("/(\w+)\/(JJ|RB|VB)\b/", "not$1/$2", $tweet);

\b仅匹配字母数字字符与非字母数字字符或字符串的开头/结尾。