这是我的代码的一部分,在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组件的方法
没办法?!!!
答案 0 :(得分:0)
当我们写[^ abc] +时,它会排除“a”,“b”和“c”,但这是什么 如果我们希望它排除确切的“abc”?!
[^(abc)] +不起作用
[^ \ babc \ b] +不起作用
(?!abc)不起作用
那是假的;消极的前瞻工作;如果它似乎没有,那么使用是错误的。
但是有一个问题:它在
[^<|(\{/changenumber\})]
全部排除了 这句话的字符 - “{”,“c”,“h”,“a”等
而不是
[^<|(\{/changenumber\})]
写
((?!\{/changenumber\})[^<])
- 我例如,将先行放在否定的集合前面。
此外,你应该用.*
代替.*?
非贪婪。