排除正则表达式中的精确短语

时间:2013-03-08 18:33:57

标签: regex phrase

这是我的代码的一部分,在p,span,a和其他一些标签中找到“1”,也可以在“{changenumber}”和“{/ changenumber}”之间找到“1”,然后将其替换为“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中的rereplacer组件的方法

没办法?!!!

1 个答案:

答案 0 :(得分:0)

  

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

     

[^(abc)] +不起作用

     

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

     

(?!abc)不起作用

那是假的;消极的前瞻工作;如果它似乎没有,那么使用是错误的。

  

但是有一个问题:它在[^<|(\{/changenumber\})]全部排除了   这句话的字符 - “{”,“c”,“h”,“a”等

而不是

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

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

- 我例如,将先行放在否定的集合前面。

此外,你应该用.*代替.*?非贪婪。