假设句子
“现在时间是晚上 8 点 15 分。后面是一些其他的文字”
为什么以下正则表达式与该行不匹配?
egrep '\<[1-9]\s*:\s*[0-9]{2}\s*[Pp][Mm]\>' file
我在 MAC 上,使用 GNU egrep
$ egrep --version egrep (GNU grep) 2.5.1
假设句子
“现在时间是晚上 8 点 15 分。后面是一些其他的文字”
为什么以下正则表达式与该行不匹配?
egrep '\<[1-9]\s*:\s*[0-9]{2}\s*[Pp][Mm]\>' file
我在 MAC 上,使用 GNU egrep
$ egrep --version egrep (GNU grep) 2.5.1
这是因为正则表达式中的前导和尾随符号:< 和 >。把它们拿出来,这是一场比赛。
完全无法重现。
Mac OS X 10.7:
(0)marks-mac-mini> cat file
The time is now 8:15pm. Followed by some other text
"The time is now 8:15pm. Followed by some other text"
(0)marks-mac-mini> egrep '\<[1-9]\s*:\s*[0-9]{2}\s*[Pp][Mm]\>' file
The time is now 8:15pm. Followed by some other text
"The time is now 8:15pm. Followed by some other text"
(0)marks-mac-mini> egrep --version
egrep (GNU grep) 2.5.1
所以你在某个地方错了......
编辑啊,问题是空间。egrep 无法识别\s
;这是一个Perlism。你的问题不包括那里的空间。
在我的 OS X 机器上使用 GNU egrep,表达式工作得很好并且匹配你的行。它可能是您特定版本的 grep(它是非 GNU grep 吗?)