【发布时间】:2015-05-12 08:57:54
【问题描述】:
使用正则表达式匹配这行文本我发现年份仍然显示为2015-01-07 而不仅仅是2015。谁能看到我的正则表达式有什么问题?
代码行:
2015-01-07 Wed Jan 07 11:03:43.390 DD Started
我的正则表达式:
(?<date>(?<year>(?:\d{4}|\d{2})-(?<month>\d{1,2})-(?<day>\d{1,2})))\s(?<logEntry1>.*)\s(?<logEntry2>.*)\s(?<logEntry3>.*)\s(?<time>(?<hour>\d{2}):(?<minutes>\d{2}):(?<seconds>\d{2}).(?<milli>\d{0,3}))\s(?<logEntry>.*)
为什么我不能单独列出“年份”? 我通过 regex101.com 运行它,这里是捕获组值:
MATCH 1
date [0-10] `2015-01-07`
year [0-10] `2015-01-07`
month [5-7] `01`
day [8-10] `07`
logEntry1 [11-14] `Wed`
logEntry2 [15-18] `Jan`
logEntry3 [19-21] `07`
time [22-34] `11:03:43.390`
hour [22-24] `11`
minutes [25-27] `03`
seconds [28-30] `43`
milli [31-34] `390`
logEntry [35-45] `DD Started`
【问题讨论】:
-
您的正则表达式期望日期为 yymmdd 而在日志中为 ddmmyy。
-
很抱歉。我那里的代码行不正确。现在改了,但问题依旧存在。
-
请注意,未转义的点将匹配任何字符。