我在使用正则表达式搜索HTML标签之间的文本时遇到了一些困难。这是为了在HTML页面上搜索文本而不将字符作为标签或属性的匹配项查找的搜索功能。当找到匹配项时,我会用一个div将其包围,并分配一个highlight类来突出显示HTML页面中的搜索词。如果RegExp还匹配标签或属性,则HTML代码将变得损坏。
以下是HTML代码:
<html>
<span>assigned</span>
<span>Assigned > to</span>
<span>assigned > to</span>
<div>ticket assigned to</div>
<div id="assigned" class="assignedClass">Ticket being assigned to</div>
</html>
我已经想出了当前的正则表达式:
(?<=(>))assigned(?!\<)(?!>)/gi
如果assigned或Assigned是标签文本的开头,但不在其他位置匹配。它可以很好地忽略属性和标签,但如果文本没有以搜索字符串开头,则不起作用。
有人能帮助我吗?我已经在这上面工作了一个小时,但找不到解决方案(对于RegExp来说,我是个新手..)
更新2
https://regex101.com/r/ZwXr4Y/1 显示了关于HTML实体和HTML注释的剩余问题。
当搜索时,问题仍然存在,那就是
没有被忽略,应该忽略所有HTML实体和注释中的文本。因此,当搜索"b"时,即使HTML实体正确位于HTML标记之间,它也不应与
匹配。
>
和下一个<
之间的文本 - 类似于这样:/>([\w> ]+?)</g
。Regex101 - sideroxylon