我试图使用正则表达式(在php中)查找一个特定的字符串,后面必须跟一个非字母数字字符(不区分大小写)。
Example String:
Doggy is a lazy dog! Doggy. Dog and I.
Search String: Dog
Expected Result:
Doggy is a lazy <a href="">dog</a>! Doggy. <a href="">Dog</a> and I.
所以它不应该与“狗狗”相匹配。因为Dog子字符串后面跟不是非字母数字字符。
我在这些方面尝试了一些东西,但它并没有完全符合我的要求。
preg_replace("/(dog)[^a-zA-Z0-9\s\p]/i/", "", $str);
答案 0 :(得分:4)
听起来像你 不一定&#34;字符串后跟非字母数字&#34;。 您可以使用\b
&#34;字边界&#34;来实现此目的。正则表达式锚:$search = "dog"
preg_replace("/\b".$search."\b/i", "", $str);
答案 1 :(得分:1)
你的正则表达式几乎是正确的,但有一些错误:
Dog
与其后的空格匹配,如果是,请删除\s
\p
不是有效的正则表达式字符。\i
之后你不应该有一个额外的斜线。 \i\
- &gt; \i
您也没有代码可以添加锚标记(<a href=""></a>
)。
所以,我已经把所有这些都编成了以下声明:
preg_replace("/(dog)([^a-zA-Z0-9])/i", '<a href="">$1</a>$2', $str);
返回:
Doggy is a lazy <a href="">dog</a>! Doggy. <a href="">Dog</a> and I.