仮定文
「時刻は現在午後 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
仮定文
「時刻は現在午後 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
まったく再現できません。
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
。それがパーリズムです。あなたの質問にはそこにスペースが含まれていませんでした。
これは、正規表現の先頭と末尾の記号が原因です: < と >。それらを取り出すと、それは一致です。
私のOS XマシンでGNU egrepを使用すると、式はうまく機能し、あなたの行と一致します。特定のバージョンの grep である可能性があります (GNU 以外の grep ですか?)