带有 GREP 的 SUBLIME:搜索单词,忽略某些行

SUBLIME with GREP: Search for words, ignoring certain lines

我有一个超过 24,000 行的长文本文档。 我需要搜索 83 个不同的单词,并在单词单独出现在一行时删除这 83 个单词的所有实例(请参见下面的示例)。单词将被删除。但是搜索必须忽略:

例子

§History of TIME
HISTORY OF TIME
of
Future
Past
Of
Many Of
Official
Officer
North of the town
I am one of them 

如果我搜索 Of 那么在上面只有第三行和第六行会被突出显示。

第一行不会突出显示,因为它以 § 开头。

第二行不会突出显示,因为它全部大写。

Many ofNorth of the townI am one of them 不会突出显示,因为它本身不是 Of

这在 Sublime 中可行吗?我认为搜索所有 83 个单独的词会使查询过于复杂。但是,如果我一次可以搜索一个词(确保它跳过大写字母中的所有行以及以 § 开头的所有行,那么就没问题了)。

如果这在 Sublime 中不可行,我可以使用其他方法吗?

你说当某行不是以 § 开头或全大写且不属于 many of、[=13 时,你想删除所有出现的 of =]、one of、等词组。

使用

查找(^(?:(?:§.*|[^[:alpha:]\n\r]*[[:upper:]]+(?:[^[:alpha:]\n\r]+[[:upper:]]+)*[^[:alpha:]\n\r]*))$|(?i:\b(?:many|north|one)\s+of\b))|(?i:\bof\b)
替换</code></p> <p>见<a href="https://regex101.com/r/a1lOZf/3" rel="nofollow noreferrer">regex demo</a></p> <p><strong>详情</strong></p> <ul> <li><code>(^(?:(?:§.*|[^[:alpha:]\n\r]*[[:upper:]]+(?:[^[:alpha:]\n\r]+[[:upper:]]+)*[^[:alpha:]\n\r]*))$|(?i:\b(?:many|north|one)\s+of\b)) - 捕获组 1(使用替换模式中的 </code> 占位符引用): <ul> <li><code>^ - 行首

  • (?: - 一组:
    • §.*
    • | - 或
    • [^[:alpha:]\n\r]*[[:upper:]]+(?:[^[:alpha:]\n\r]+[[:upper:]]+)*[^[:alpha:]\n\r]* - LF/CR 符号和字母以外的 0+ 个字符,然后是 1+ 个大写字母,然后是 0+ 个非换行符和非字母字符序列,后跟 1+ 个大写字母并以 0+ 个非换行符和非字母字符序列结尾
    • )$ - 结束
  • |
    • (?i:\b(?:many|north|one)\s+of\b) - 不区分大小写的组匹配 manynorthone,后跟 1+ 个空格,然后 of 作为整个单词
  • | - 或
  • (?i:\bof\b) - 一个不区分大小写的组:of作为一个完整的词。
  • 看SublimeText3测试,介意select正则模式区分大小写匹配: