【问题标题】:Regular expression character class with parenthesis with grep command带括号的正则表达式字符类与 grep 命令
【发布时间】:2017-03-28 19:06:49
【问题描述】:

使用 grep 命令的正则表达式。例如,假设我有一个名为 regular.txt 的文件,其中包含如下日期:

$ cat regular.txt
    july
    jul
    Fourth
    4th
    4   

所以我正在尝试匹配输入文件中的所有这些文本,使用以下处理方法:

方法一:只匹配Fourth|4th|4

   $egrep '(Fourth|4th|4)` regular.txt

输出方法一:

    Fourth
    4th
    4   

方法2:使用可选括号仅匹配Fourth|4th|4

  $ egrep '(Fourth|4(th)?)` regular.txt

输出方法二:

    Fourth
    4th
    4   

方法 3:匹配整个文件 july, jul, Fourth, 4th, 4。我正在使用如下命令:

$ egrep 'july? (Fourth|4(th)?)` regular.txt

输出方法3:这里什么都不会匹​​配。如何做到这一点?

你能帮我解决这个问题吗?

谢谢,

【问题讨论】:

  • 您需要 7 月或 4 日或 4 月或 7 月,然后是第四?
  • 好吧,Fourth|4(th)?|july??
  • 嗨,Witor,你是对的。
  • 嗨 SMA,我需要输出 7 月和 4 月。
  • 这里没有“字符类”。正则表达式字符类是用于匹配集合中的单个字符的构造。

标签: regex grep


【解决方案1】:

您的july? (Fourth|4(th)?) 正则表达式匹配一个序列 模式,jul 后跟一个可选的y,然后是一个空格,然后是 2 个备选方案:Fourth4 可选地后跟带有th 子字符串。

如果您打算匹配 juljuly 作为第三种选择,请将其添加到分组构造中:

'Fourth|4(th)?|july?'
              ^   ^^ 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    相关资源
    最近更新 更多