我想搜索字符串中的单词,并希望替换该字符串中的第一个匹配项。我也想排除仅在标签之间的文本。这意味着具有超链接的文本不应该被替换。
这应该在新行中检查新行。
示例:
这里是我的字符串。我想替换我的字符串。在 这个字符串只有1我将被替换,这是第一个,没有 锚链接。
用“ This”替换我
输出。
这里是我的字符串。我想替换此字符串。 在此字符串中,只有1我将被替换,这是第一个,而不是 有锚链接。
谢谢
答案 0 :(得分:1)
您可以使用此正则表达式匹配仅出现在<a> </a>
标记中的“ my”的首次出现。
^.*?\Kmy(?![^>]*\/\s*a\s*>)
并根据需要在帖子中将其替换为“ this”。
说明:
^
->输入开始.*?
->以非贪婪方式匹配任何字符(以捕获我的第一次出现的情况)\K
->重置所有匹配项,以便仅匹配“ my”,而需要用“ this”替换(?![^>]*\/\s*a\s*>)
->否定前瞻性,以确保<a> </a>
标签中不包含“我的”文本。这是相同的示例PHP代码,
$str = 'Here is < a > my < / a > String. I Would like to replace my string. In this string only 1 my will be replace which is first and doesn\'t has anchor link.';
$res = preg_replace('/^.*?\Kmy(?![^>]*\/\s*a\s*>)/','this',$str);
echo $res;
这将提供您期望的以下输出,
Here is < a > my < / a > String. I Would like to replace this string. In this string only 1 my will be replace which is first and doesn't has anchor link.