Regex 升华;正则表达式:如何找到3个字母或更少的所有行,不包括某些行?

Regex 升华;正则表达式:如何找到3个字母或更少的所有行,不包括某些行?,regex,sublimetext3,Regex,Sublimetext3,我有一份10000行长的文件。 我想删除所有3个字母或更少的行,不包括任何以§符号开头的行,也不包括所有大写的行 示例: 搬迁前: §day DOG Happy Monday Now Yes Sunday §new day.txt DIY Leg Books Car Home 拆除后: §day DOG Happy Monday Sunday §new day.txt DIY Books Home DOG和DIY不受影响,因为它们都是大写字母。 以§开头的行也不受影响 我的尝试 我知道此代

我有一份10000行长的文件。 我想删除所有3个字母或更少的行,不包括任何以§符号开头的行,也不包括所有大写的行

示例: 搬迁前:

§day
DOG
Happy
Monday
Now
Yes
Sunday
§new day.txt
DIY
Leg
Books
Car
Home
拆除后:

§day
DOG
Happy
Monday
Sunday
§new day.txt
DIY
Books
Home
DOG
DIY
不受影响,因为它们都是大写字母。 以
§
开头的行也不受影响


我的尝试

我知道此代码可用于使正则表达式忽略所有大写的行以及所有以
§
开头的行(在本例中,代码搜索的是
多行、北行或一行)

我还知道,它可以用来查找所有3个字母或更少的单词

'^.{1,3}$'
有没有办法把它们结合起来


我尝试用
'^.{1,3}$'
替换
many | north | one
,但没有效果。

您可以使用以下正则表达式进行搜索:

^(?!(?:§|[A-Z]+$)).{0,3}(?:[\r\n]+|\z)
并使用空字符串替换:

确保在正则表达式中启用了模式
m
或多行

正则表达式详细信息:

  • ^
    :开始
  • (?!(?:§|[A-Z]+$)
    :如果行以
    §
    开头或仅包含大写字母,则可使用负前瞻来断言失败
  • {0,3}(?:[\r\n]+|\z)
    匹配任意字符0到3次,后跟一个或多个换行符或文件结尾
之前:

之后 我建议使用

(?-i)^(?!§|[A-Z]+$).{1,3}$\R?
详细信息

  • (?-i)
    -打开区分大小写功能(或者,您可以忽略它并打开
    Aa
    选项,如下面的屏幕截图所示)
  • ^
    -行的开头
  • (?!§|[A-Z]+$)
    -不允许在开头使用
    §
    ,并且只允许使用大写ASCII字母
  • {1,3}
    -1到3个字符
  • $
    -行尾
  • \R?
    -可选的换行顺序
SublimiteText3测试:

(?-i)^(?!§|[A-Z]+$).{1,3}$\R?