正则表达式不适用于获取日期

正则表达式不适用于获取日期

我的文件sample1.txt包含以下数据:

2017-12-08
2017-12-31
2016-12-31
201707-31
2017-08-31
2017-08 -31
2017-0008-31
2017 08abcd 31
2017 0812-31
2017 -08- 31

我想获取从 2017 年开始到 31 年结束的日期,中间有“08”。我在 grep 中使用下面的正则表达式来获取这些日期,但它不起作用。

grep -E '^2017(08)+31$' sample1.txt

答案1

从 2017 年开始,到 31 结束,中间有“08”

  • 从2017年开始——^2017
  • 然后有什么或什么都没有-.*
  • 然后有08-08
  • 然后有什么或什么都没有-.*
  • 然后以 31 结束 -31$

把这一切放在一起

^2017.*08.*31$

我不明白你能从哪里得到(08)+。在扩展 RE 中,这定义了一种由一个或多个08序列组成的模式。例如,080808甚至080808080808080808.

相关内容