問題ID:35872
3yamot
投稿数: 6
拡張正規表現「+」に関する質問です。
問題の内容としては、
「system.log」ファイルから17時台(時刻)を表す行のみ抽出するコマンドを選択するのですが、以下の2択が正解となっております。
1
grep -E '17:[0-5][0-9]:[0-5][0-9]' system.log
2
grep -E '17:[0-9]+:[0-9]+' system.log
この2が正解とされていることについて、以下の解説がありました。
-------------------------------------------
「+」は直前の文字の1回以上の繰り返しなので、「17:00:00」から「17:99:99」の範囲を抽出します。
-------------------------------------------
ただ、拡張正規表現である「+」は「直前の文字の1回以上の繰り返し」を表すので、例えば「17:0:0」といった文字列を含む行も抽出されてしまうと認識しているのですが、何故上記の解説にあるような抽出範囲になるのでしょうか?
ご教示いただけましたら幸いです。
何卒よろしくお願いいたします。
問題の内容としては、
「system.log」ファイルから17時台(時刻)を表す行のみ抽出するコマンドを選択するのですが、以下の2択が正解となっております。
1
grep -E '17:[0-5][0-9]:[0-5][0-9]' system.log
2
grep -E '17:[0-9]+:[0-9]+' system.log
この2が正解とされていることについて、以下の解説がありました。
-------------------------------------------
「+」は直前の文字の1回以上の繰り返しなので、「17:00:00」から「17:99:99」の範囲を抽出します。
-------------------------------------------
ただ、拡張正規表現である「+」は「直前の文字の1回以上の繰り返し」を表すので、例えば「17:0:0」といった文字列を含む行も抽出されてしまうと認識しているのですが、何故上記の解説にあるような抽出範囲になるのでしょうか?
ご教示いただけましたら幸いです。
何卒よろしくお願いいたします。
投稿ツリー
-
問題ID:35872
(3yamot, 2020-5-22 8:22)
-
Re: 問題ID:35872
(staff_meg, 2020-5-22 9:38)
- Re: 問題ID:35872 (3yamot, 2020-5-23 13:11)
-
Re: 問題ID:35872
(staff_meg, 2020-5-22 9:38)