• ベストアンサー

[perl]正規表現

質問させていただきます。 by ***.***.hoge.jp を正規表現で表すならば、 by\s+(ここに何が入るからわからない).hoge.jp この()の部分は何が入るのでしょうか? 初めの”by” と 最後の”hoge.jp” は確定で入るのですが、途中の部分は何の文字が来てもいいように正規表現を組みたいです。 何の文字が来てもいい、というような表現方法はありますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.1

\s+ という表現を知ってるのにそれを知らないって言うのも奇妙な話・・・ .(ドット)が任意の文字なので .+ なら1文字以上の任意文字列 .* なら0文字以上の任意文字列 になりますよ。 なお、任意文字というのは空白文字も含みますのでそれが意図通りでないのなら適宜適切な表現を使ってください。 細かいことは「perl 正規表現」で検索して調べた方がたぶん速いです。 あとついでに、 .は任意の1文字なので hoge.jp という正規表現は hogeXjp とかにもマッチしちゃいますよ。

その他の回答 (1)

  • hirotn
  • ベストアンサー率59% (147/246)
回答No.2

パターンマッチを試行する変数に hoge.jp が by 以降2度以上出現するならば、 (1)by\s(.+?)\.hoge\.jp 一度ならば (2)by\s(.+)\.hoge\.jp となります。(1)がおすすめです。 #1の方のご指摘の通り、例えば、foohogeXjp.hoge.jpを排除するために、"."(ドット)の前に、"\"を付けて、陽にドットであると示す必要があると思います。

blitzcrank
質問者

お礼

お二方ともありがとうございます。 おかげでやりたいことができました。 まとめてお礼申し上げます。