正则表达式匹配数字模式

时间:2015-04-06 07:11:55

标签: regex awk grep

我正在尝试匹配以下列表中的特定数字模式。 我的要求是仅将report.20150325report.20150331匹配。请帮忙。

report.20150319
report.20150320
report.20150321
report.20150322
report.20150323
report.20150324
report.20150325
report.20150326
report.20150327
report.20150328
report.20150329
report.20150330
report.20150331

4 个答案:

答案 0 :(得分:1)

匹配25到31使用正则表达式2[5-9]|3[01]

非常简单

这是完整的正则表达式

(report\.201503(2[5-9]|3[01]))

DEMO

2[5-9]|3[01]

的说明
2 followed by a single character in the range between 5 and 9
OR
3 followed by 0 or 1

答案 1 :(得分:0)

您可以使用以下内容:^report\.201503(2[5-9]|3[01])$/gm(使用this工具构建)。

它应与您之后的报告相匹配,如here所示。

答案 2 :(得分:0)

好像你想打印出两条独立图案的线条之间的线条(包括与图案相匹配的线条)。

$ sed -n '/^report\.20150325$/,/^report\.20150331$/p' file
report.20150325
report.20150326
report.20150327
report.20150328
report.20150329
report.20150330
report.20150331

答案 3 :(得分:0)

正则表达式匹配并不总是正确的方法。在这里,您要求匹配一个字符串后跟一个数字,所以使用字符串和数字比较:

$ awk -F'.' '$1=="report" && ($2>=20150325) && ($2<=20150331)' file
report.20150325
report.20150326
report.20150327
report.20150328
report.20150329
report.20150330
report.20150331