0

仮定文

「時刻は現在午後 8 時 15 分です。その後に別のテキストが続きます」

次の正規表現が行と一致しないのはなぜですか?

egrep '\<[1-9]\s*:\s*[0-9]{2}\s*[Pp][Mm]\>' file

GNU egrepを使用して、MACを使用しています

$ egrep --version egrep (GNU grep) 2.5.1

4

3 に答える 3

2

まったく再現できません。

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。それがパーリズムです。あなたの質問にはそこにスペースが含まれていませんでした。

于 2012-05-14T02:27:40.463 に答える
2

これは、正規表現の先頭と末尾の記号が原因です: < と >。それらを取り出すと、それは一致です。

于 2012-05-14T02:10:50.847 に答える
1

私のOS XマシンでGNU egrepを使用すると、式はうまく機能し、あなたの行と一致します。特定のバージョンの grep である可能性があります (GNU 以外の grep ですか?)

于 2012-05-14T02:23:19.290 に答える