使用 Notepad++ 的正则表达式查找排除子字符串的字符串模式

Regex with Notepad++ to find a string pattern that excludes a substring

我有一个包含 10 万行 html 并填充了 <tr> ... </tr> 标签的文档。在这些多行标记集的每一个内部的某个地方都有一个带有单词 "purpose" 的元素,除了一个。我需要找到以 <tr> 开头并且在结束 </tr> 标记之前有一堆字符并且在该标记集中没有字符串实例 "purpose" 的页面长字符串。我正在使用带有 Regex 的 Notepad++ v7 搜索并匹配换行符。通过搜索 <tr>(.*?)</tr> 可以轻松匹配 tr 字符串 这匹配一组且仅匹配一组标签,其间包含所有文本。我不能做的是找到表达式来找到这个没有 "purpose" 的字符串。我已经尝试过 <tr>(?!.*?"purpose")(.*?)</tr> 它将在最后一个包含 "purpose" 的字符串之后找到第一个 tr 字符串(是的,我需要包括引号)和许多变体,并阅读正则表达式否定的前后教程,但没有有用。我有很多类似的问题与此文本缺少内容有关,所以如果有人知道如何执行此操作,请提前致谢!!!

这应该可以解决问题:

<tr>((?!"purpose").)*?</tr>

本质上,

  1. 找到开始标签并跳转到后面的字符。
  2. 检查以确保它和连续字符不匹配 "purpose"(包括引号)
  3. 前进一个字符,如果还没有到达结束标记,returns到2。
  4. 在结束标记处停止。