这是我得到的:
grep -E '^([0-9]+[0-9]*[.]+[:blank:]+[a-zA-Z0-9]+)' text.txt
我正在尝试查找具有一位或多位数字后跟“.”的所有匹配项。点,在开头加上一个空格,后面跟着至少一个字符或数字。所以,一些可能的匹配是,
1. hello
2. this works too
5. Fantastic show
12. Target
我得到的有什么问题。
最佳答案
您不要在后置数字匹配表达式中包含空格:
[a-zA-Z0-9]+
。
你也可以简化你的表达。
[0-9]+[0-9]*
应该只是[0-9]+
,或者更简单的\d+
。您的原始表达方式是“匹配一位或多位数字,然后匹配零位或多位数字”。一个或多个已经处理了您预期的输入。[.]+
- 您是否期望不止一个周期?如果没有,您只需要[.]
鉴于此,我会将您的表达方式更改为:
^([0-9]+[.][[:blank:]]+[a-zA-Z0-9 ]+)
(感谢 @randomir,编辑 posix [[:blank:]]
)。
关于regex - 我的正则表达式有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46550150/