preg_replace从匹配中替换一个额外的字符

时间:2012-11-02 15:03:09

标签: php preg-replace

我有一个几乎可以正常工作的正则表达式:)

/test[^test<]/

我正在使用prep_replace(),我希望它能找到任何字符串&#39; test&#39;并将其替换为测试,但字符串为&#39; test&lt;&#39; (意味着已经被替换)。

测试文字是: &#34;这是一个测试。这是考试吗?一些测试和测试,但测试&lt; testowanie&#34;

它给了我这个结果: &#34;这是一个测试这是一个测试,一些测试和测试,但测试&lt; testwanie&#34;

所以它正确地排除了字符串&#39; test&lt;&#39;但任何其他比赛替换&#39;测试&#39; +一个额外的角色。

任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:2)

方括号表示字符类,^表示该字符类的否定。最终结果是您匹配序列test,后跟任何一个非test或{{1}的字符}}

使用此代码:<,以匹配序列/test(?!<)/的所有匹配项,而不是左尖括号。