いつもながら正規表現に不安を覚える初心者です。 ファイルからGrepでfor a whileを検索しました。 for a whileの後に、ピリオド、カンマ、?や半角スペースの続くものを調べようとしました。 for a while[\.\,\?\s]と、for a while[.,? ]の入力結果が同じでした。.,?半角スペースの前に\をつけなくてもよいのでしょうか。
▼ Kiさん > いつもながら正規表現に不安を覚える初心者です。 > ファイルからGrepでfor a whileを検索しました。 > for a whileの後に、ピリオド、カンマ、?や半角スペースの続くものを調べようとしました。 > for a while[\.\,\?\s]と、for a while[.,? ]の入力結果が同じでした。.,?半角スペースの前に\をつけなくてもよいのでしょうか。
文字クラス内のエスケープシークエンスに悩むよりも for a while(\.|,|\?| ) for a while(\.|,|\?|\s) のように書いた方がわかりやすいかもしれません (カンマは正規表現の特殊文字ではないためエスケープしなくても構いません)。
▼ 神楽さん > ▼ Kiさん > > いつもながら正規表現に不安を覚える初心者です。 > > ファイルからGrepでfor a whileを検索しました。 > > for a whileの後に、ピリオド、カンマ、?や半角スペースの続くものを調べようとしました。 > > for a while[\.\,\?\s]と、for a while[.,? ]の入力結果が同じでした。.,?半角スペースの前に\をつけなくてもよいのでしょうか。 > > 文字クラス内のエスケープシークエンスに悩むよりも > for a while(\.|,|\?| ) > for a while(\.|,|\?|\s) > のように書いた方がわかりやすいかもしれません > (カンマは正規表現の特殊文字ではないためエスケープしなくても構いません)。 > > なお\sは、半角スペース、タブ、改行以外にも、垂直タブと改ページにもマッチしますが、 > キーボードから直接入力できる文字ではないため通常は意識する必要はないでしょう。
じゅうじさん、神楽さん 本当にありがとうございます。 初心者にはカンマもエスケープした下記の形式が覚えやすいように思いました。はやく自信を持って使いこなせるようになりたいものです。 for a while(\.|\,|\?|\s) 御礼