Regex 使用GREP升华:搜索单词,忽略某些行

Regex 使用GREP升华:搜索单词,忽略某些行,regex,grep,sublimetext3,Regex,Grep,Sublimetext3,我有一个超过24000行的长文本文档。 我需要搜索83个不同的单词,当这些单词单独出现在一行中时,我需要删除这83个单词的所有实例(参见下面的示例)。这些词将被删除。但搜索必须忽略: 只有大写文字的所有行 以§§§符号开头的所有行(不管行的其余部分是大写字母还是小写字母) 范例 §History of TIME HISTORY OF TIME of Future Past Of Many Of Official Officer North of the town I am one of th

我有一个超过24000行的长文本文档。 我需要搜索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 
如果我搜索中的
,则在上面只会突出显示第三行和第六行

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

第二行不会高亮显示,因为它位于所有大写字母中

许多
城镇北部
,以及
我是其中一员
将不会突出显示,因为它本身不是

这在崇高中是可能的吗?我认为搜索所有83个单独的单词会使查询变得太复杂。但如果我可以一次搜索一个单词(确保它跳过所有大写的行和所有以
§
开头的行,那么就可以了)


如果这在崇高中是不可能的,有没有其他方法我可以使用

当一行不是以
§
开头或是ALLCAPS,并且不是
的一部分时,许多
以北的
中的一个等短语,您说要删除所有出现的

使用

查找
(^(?:(?:§.*.[^:阿尔法:][\n\r]*[:上:][]+(?:[^:阿尔法:][\n\r]+[:上:][上:][:阿尔法:][\n\r]*)$|(?i:\b(?:多个北一个)s+of\b));(?i:\bof\b)

替换
$1

详细信息

  • (^(?:(?:§.*.[^:阿尔法:][\n\r]*[:上:][]+(?:[^[:阿尔法:][\n\r]+[:上:][]上:][^[:阿尔法:][\n\r]*)$。(?i:\b(?:多个北一个)s+of\b))
    -捕获组1(从替换模式中以
    $1
    占位符引用):
    • ^
      -行的开头
    • (?:
      -组:
      • §.*
      • |
        -或
      • [^[:alpha:][\n\r]*[:upper:][]+(?:[^[:alpha:][\n\r]+[:upper:][]+)*[^[:alpha:][\n\r]*
        -0+字符(除LF/CR符号和字母外),然后1+大写字母,然后0+非换行符和非字母字符序列,后跟1+大写字母,最后是0+非换行符和非字母字符序列
      • )$
        -结束
    • |
      • (?i:\b(?:many | north | one)\s+of\b)
        -一个不区分大小写的组,匹配
        many
        north
        one
        ,后跟1+空格,然后
        of
        作为整个单词
  • |
    -或
  • (?i:\bof\b)
    -不区分大小写的组:
作为一个单词 请参阅SublimiteText3测试,注意选择正则表达式模式和区分大小写的匹配:


§
$
。。。你所说的
是什么意思,其中许多内容不会突出显示,因为它不是独立的。
-你的意思是你的搜索必须区分大小写吗?或者它必须是行中唯一的单词,但在这种情况下,为什么要排除大写单词等?
所有的行都是大写的
-所以你只想排除
中的
,因为如果你要查找的行中只有
不会有任何其他大写字母。注释不用于扩展讨论;这段对话已经结束。