2

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

/test[^test<]/

我正在使用 prep_replace() 并且我希望它找到字符串“test”的任何出现并用 test 替换它,除非字符串是“test<”(意味着已经被替换)。

测试文本是:“这是一个测试。这是一个测试吗?一些测试和测试但测试< testowanie”

它给了我这个结果:“这是一个测试这是一个测试一些测试和测试但是测试< testwanie”

所以它正确地排除了字符串 'test<' 但与任何其他匹配替换 'test' + 一个额外的字符。

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

4

1 回答 1

2

方括号代表一个字符类,而^代表该字符类的否定。最终结果是您匹配的序列test后跟任何一个字符不是t, e, s,t<

请改用:/test(?!<)/, 来匹配所有出现的test不跟左尖括号的序列。

于 2012-11-02T15:04:21.593 回答