使用正则表达式查找不在html标记中的特定字符串

Suk*_*asa 18 .net html regex

我正在尝试使用的特定正则表达式有些困难.我在文档中搜索字符串的每次出现(为了我的目的,我会说它是" mystring "),除了它在标签中的位置,例如

<a href="_mystring_">
Run Code Online (Sandbox Code Playgroud)

不应该匹配,但是

<a href="someotherstring">_mystring_</a>
Run Code Online (Sandbox Code Playgroud)

应该匹配,因为它不在标签内部(内部意思是"在<和>标记内")我也使用.NET的正则表达式函数.

Nic*_*ggs 23

这应该这样做:

(?<!<[^>]*)_mystring_
Run Code Online (Sandbox Code Playgroud)

它使用负面外观来检查匹配的字符串是否没有<之前没有相应的>

  • 这在 js 中不起作用。在 js 中不支持回看。你能为js推荐它吗? (3认同)
  • 哇,这是一个漂亮的正则表达式!@Sukasa,你能把你想出的最后一个贴出来吗? (2认同)

Joh*_*den 10

当你的正则表达式处理器不支持变长后看时,试试这个:

(<.+?>[^<>]*?)(_mystring_)([^<>]*?<.+?>)
Run Code Online (Sandbox Code Playgroud)

保留捕获组1和3并替换捕获组2:

例如,在Eclipse中,找到:

(<.+?>[^<>]*?)(_mystring_)([^<>]*?<.+?>)
Run Code Online (Sandbox Code Playgroud)

并替换为:

$1_newString_$3
Run Code Online (Sandbox Code Playgroud)

(其他正则表达式处理器可能使用不同的捕获组语法,例如\ 1)


sbo*_*ami 8

搜索的另一个正则表达式对我有用

(?![^<]*>)_mystring_
Run Code Online (Sandbox Code Playgroud)

资料来源:https://stackoverflow.com/a/857819/1106878