Preg_replace模式但排除了一些匹配

时间:2014-08-05 00:50:24

标签: preg-replace

我正在尝试使用preg_match匹配字符串中的所有capitlized单词,但我想排除一些匹配。

$line1 = "This is PATTERN that matches";
$line2 = "I don't want to match";
$line3 = "I'm not matching correctly";

所以我的正则表达式是:

preg_replace('/\b([A-Z]*)\b/','<span style="font-weight:bold;">$1</span>',$text);

在第一行中,它将正确匹配PATTERN并加粗。但是在第二行中,它加粗了“我”,在第三行中,它从我那里加注了“我”。我在正则表达式中使用[^]尝试了各种警告,但似乎没有任何地方。

因此,为了排除“我”或甚至“PM”,或者我不想包括的可能被资格化的字母/单词列表,我会使用什么?

1 个答案:

答案 0 :(得分:0)

怎么样:

$str = "I want to match PATTERN but not PM";
$str = preg_replace('/\b(?!PM)(?!I)([A-Z]+)\b/','<span style="font-weight:bold;">$1</span>',$str);
echo "$str\n";

<强>输出:

I want to match <span style="font-weight:bold;">PATTERN</span> but not PM