正则表达式:如何查找字符串后跟非字母数字

Car*_*ary 5 php regex preg-replace

我正在尝试使用正则表达式(在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.
Run Code Online (Sandbox Code Playgroud)

所以它不应该与'Doggy'匹配,因为Dog子字符串后面没有非字母数字字符.

我正在沿着这些方向尝试一些东西,但它并没有完全符合我的要求.

preg_replace("/(dog)[^a-zA-Z0-9\s\p]/i/", "", $str);
Run Code Online (Sandbox Code Playgroud)

Tom*_*ord 4

在我看来,您实际上在这里想做的是执行精确的单词匹配。不一定是“一个字符串后跟一个非字母数字”。

您可以使用\b“单词边界”正则表达式锚来实现此目的:

$search = "dog"
preg_replace("/\b".$search."\b/i", "", $str);
Run Code Online (Sandbox Code Playgroud)