問題ID:35872
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
問題ID:35872
msg# 1
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」といった文字列を含む行も抽出されてしまうと認識しているのですが、何故上記の解説にあるような抽出範囲になるのでしょうか?
ご教示いただけましたら幸いです。
何卒よろしくお願いいたします。
Re: 問題ID:35872
msg# 1.1
staff_meg
投稿数: 427
3yamotさん
ご指摘の点を修正致しました。
ご報告、誠にありがとうございました。
ご指摘の点を修正致しました。
ご報告、誠にありがとうございました。
Re: 問題ID:35872
msg# 1.1.1
3yamot
投稿数: 6
staff_meg 様
修正確認いたしました。
ご対応いただきありがとうございました。
修正確認いたしました。
ご対応いただきありがとうございました。