0

这是我的代码的一部分,用于在 p、span、a 和其他一些标签中找到“1”,也在“{changenumber}”和“{/changenumber}”之间的任何地方,然后用“2”替换它:

查找代码:

(((<(p|span|a|li|ul|br|/br|tr|td)[^>]*>)|(\{changenumber\}))[^<|(\{/changenumber\})]*)1(.*(<|(\{/changenumber\})))

和替换代码:

\12\7

但有一个问题它排除在[^<|(\{/changenumber\})]这个短语的所有字符中:"{","c","h","a"

我尝试\b\{/changenumber\}\b(?!...)我做不到!

它怎么能排除确切的短语“ {changenumber}”?!


以更简单的方式:

当我们写 [^abc]+ 它排除“a”和“b”和“c”但是如果我们希望它排除确切的“abc”怎么办?!

[^(abc)]+ 不起作用

[^\babc\b]+ 不起作用

(?!abc) 不起作用

(?!\babc\b) 不起作用

...


它的语言是英语

我使用正则表达式,因为它是在 joomla 的替换组件中替换的方式

没门?!!!

4

1 回答 1

0

当我们写 [^abc]+ 它排除“a”和“b”和“c”但是如果我们希望它排除确切的“abc”怎么办?!

[^(abc)]+ 不起作用

[^\babc\b]+ 不起作用

(?!abc) 不起作用

那是错误的;负前瞻工作;如果它似乎没有,则使用错误。

但是有一个问题:它排除[^<|(\{/changenumber\})]了这个短语的所有字符——“{”、“c”、“h”、“a”等。

代替

[^<|(\{/changenumber\})]

((?!\{/changenumber\})[^<])

— 即,将前瞻放在否定集的前面。

此外,您应该.*通过将其替换为非贪婪.*?

于 2014-06-05T08:45:53.880 回答