我要搜索以下所有行:
- 以数字重复开头(一次或多次)
- 这个数字重复符后面没有点和空白字符
- 在数字重复后加一个点或一个字母都可以
给行1. TEST 1 : DataLogFile
11. TEST 2 : Inter Citro File
111. TEST 3 : Inter Citro File
111.TEST4 : Match this
111TEST4 : Match this
1. TEST 1 : DataLogFile
11. TEST 2 : Inter Citro File
111. TEST 3 : Inter Citro File
111.TEST4 : Match this
111TEST4 : Match this
预期结果应该只匹配最后两行
111.TEST4 : Match this
111TEST4 : Match this
1。Regex
我尝试使用regex^[0-9]+(?!. ).*
只匹配最后一行,因为点后面没有空白字符。
在Regex101中测试
1。实际结果
匹配最后4行
11. TEST 2 : Inter Citro File
111. TEST 3 : Inter Citro File
111.TEST4 : Match this
111TEST4 : Match this
2。Regex like answered
当我尝试SaSkY第一响应^d+.S.*
时,它只匹配有数字的行,然后是点,然后是无空,最后是字符。看到演示
但是对于数字后面没有点的输入,它将不匹配。虽然预计也匹配111TEST4 : Match this
.
试试这个:
^d+(?:.S|[A-Za-z]).*
^
起始行。d+
一个或多个数字。(?:.S|[A-Za-z])
非捕获组:.
a literal dot.
.S
除空白字符外的任意字符。|
or .[A-Za-z]
a字母。
.*
0个或多个字符。
参见regex demo
您可以尝试:
^(d)1*+(?!.?s+).*$
Regex演示。
或者如果您只想在开头使用数字(而不是重复数字,例如111
):
^d++(?!.?s+).*$
你应该在询问之前清楚地说明你的期望。
如果你喜欢
- match: any ';identifier ';以数字(如
1Hello
)或序数(如2.World
)为前缀的单词 - 但不:包含空格的短语,如编号列表项(例如
1. Hello
)
顺序构建的简单正则表达式
然后^d+.?[a-zA-Z].*
匹配:
111.TEST4 : Match this
111TEST5: Match this
111test6: Match this
但不包括那些内部有分隔空格的编号列表项。它也不匹配任何以字母开头的东西。不匹配:
1. TEST 1 : DataLogFile
11. TEST 2 : Inter Citro File
111. TEST 3 : Inter Citro File
test7: should not match
💡️因此,您可以将此正则表达式应用于过滤器的行.
看到演示
说明顺序
^
begin of lined+
至少一个或多个数字(一个数字).?
一个可选的点(原始点需要用反斜杠转义!)[a-zA-Z]
范围内的任意字母(小写或大写).*
其他任何内容(此处未转义的点具有特殊含义"任何字符")