![]() |
* U K I Y A H O N P O * Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura, che la diritta via era smarrita. |
正規表現講座/4 のバックアップ(No.2)
まとめて1つなんとなく書いてきたこの記事も、第4回になりました。 さて今回は、「まとめて1つ」について覚えましょう。 これまとめといて!さて、今回の記号です。 () カッコです。全角ではなく半角カッコですよ。
今回は、前者の「まとめて1つの正規表現として扱う」機能について説明します。 「1つの正規表現として扱う」とはどういう意味でしょうか。 うはうはうはうはうはうはうは 「うは」が1回以上繰り返す、という文字列です。 うは+ やってみるとわかりますが、これではマッチできません。 こんな場合に効力を発揮するのが、今回の記号「()」です。 (うは)+ こうすることで、「(うは)」は「まとめて1つの正規表現として」扱われます。 カッコの中にも正規表現さて、このカッコの中でも、好きな正規表現を使うことができます。 (うは+)+ この表現、どんな文字列にマッチすると思いますか。 うはうはうはははははうはうはははうは といった文字列にマッチするわけです。 練習さて、練習の時間です。 今回は、次のような文字にマッチする正規表現を考えてみてください。 うはwwwwwwうぇwwwwうぇうぇwwwっうぇwwwっうぇうぇうぇwww 分解すると、
ちょっと難しいですね。でも、順番に組み立てていきましょう。 うは その後に以下の表現が1回以上繰り返す、とあるので、今日覚えたカッコを使います。 うは()+ カッコの中身は、まず、「っ」が0回または1回なので、こうなります。 うは(っ?)+ その次に、「うぇ」が0回以上続くのですね。 うは(っ?(うぇ)*)+ 最後に、「w」が1文字以上続きます。 うは(っ?(うぇ)*w+)+ 正規表現テスターを立ち上げ、適当な文字列を入れて、試してみてください。 ちょっと脱線今回お話した正規表現を使うと、正規表現テスターのツリーには、見慣れない これは、「()」でまとめた文字列を、後で切り出すのに使いますが、 ご指摘などはこちらへ |