我尝试使用正则表达式匹配和排除特定单词。我基本上试图在24小时内匹配所有字符串,并选择am或pm。但是,我想排除从2014年或2013年开始的字符串。例如:
输入:
11 45 pm
12 34 am
1230pm
2013pm
12 pm
12p
2014 pm
期望的输出:
11 45 pm
12 34 am
1230pm
12 pm
我想只使用一个正则表达式来匹配它。我知道如何用两个正则表达式完成这项任务。
我使用以下命令:
grep -E '^(?!2014)(?!2013)([01]?[0-9]|2[0-3])( )?[0-5][0-9]?\s?(am|pm)?' output.txt
没有成功。有什么建议?谢谢!
答案 0 :(得分:0)
您可以使用以下模式:
^((?:0?[0-9]|1[012])\s?(?:[0-5][0-9])?\s?[ap]m)
在此,我假设语句末尾有am
或pm
。
答案 1 :(得分:0)
这也有效:
[0-9]{1,2}\s*[0-9]{1,2}(?<!2013)(?<!2014)\s*(am|pm)