Regex 升华;正则表达式:如何找到3个字母或更少的所有行,不包括某些行?
我有一份10000行长的文件。 我想删除所有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不受影响,因为它们都是大写字母。 以§开头的行也不受影响 我的尝试 我知道此代
§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?