regex - 我的正则表达式有什么问题?

标签 regex linux terminal grep

这是我得到的:

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/

相关文章:

javascript - 用 Javascript 中的 anchor 替换纯文本中的电话号码

linux - 删除Linux用户是否也会删除密码?

linux - 在终端中使用 vim 并使用单独的选项卡创建命令来打开 *.h 文件

terminal - 使用 tmux 在终端中进行鼠标滚动和选择

c - 如何在 C 中解析带引号分隔字段的 CSV?

SQLite3 终端输出格式 .width

Python:如何获取方括号内的多个元素

C#:不匹配一组单词的正则表达式

c# - 为什么这个正则表达式在最后一场比赛中失败

编译linux内核模块show_mem例程