我正在尝试使用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”,或者我不想包括的可能被资格化的字母/单词列表,我会使用什么?
答案 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