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



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

$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

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

使用b字边界:

$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仅在字母数字字符与非字母数字字符或字符串的开始/结束之间匹配。

最新更新