「.(ドット)」\w\W(ダブリューが大文字!)\s\d「^」と「$」\b*+{a}?[]|()と\1実践的な正規表現まずは肩慣らしに簡単な正規表現を利用しよう正規表現を一度、覚えてしまえばプログラミングはグッと楽になります!この講座は、「正規表現ってなーに?おいしいの?」というレベルから、まずは単純な正規表現を理解できるようになることを目的としています。正規表現を覚えると文字列の操作が楽になり、プログラミングがグッと楽になります。この正規表現入門講座で正規表現の面白さを体感して下さい!メタキャラクタとはメタキャラクタとは、文字を表す文字のことです。説明してもサッパリわかりませんよね。具体例を挙げると分かりやすいと思います。\dは全ての数字を表します。1も3も5も\dです。確かに、\dは文字を表す文字ですよね?このような抽象的な文字のことをメタキャラクタと呼びます。1つ具体例を見てみましょう。「.(ドット)」は、全ての文字を表します。具体的には、い..と書くと、「い」で始まる3文字の単語を表します。「いかだ」や「いずみ」は「い」で始まる3文字なのでい..で表現できます。.....とドットを5個つなげれば、あらゆる5文字の言葉を表します。先ほどの例に戻りますが、\dは全ての数字を表すメタキャラクタでした。この「あてはまる」ことをマッチすると言います。...は任意の3文字を表すので「リンゴ」や「バナナ」にマッチします。先ほども登場しましたね。任意の文字を表します。...は、「ABC」や「あいう」、「たまご」等にマッチします。こんな使い方もできます。「あ」ではじまって「た」で終わる文字列にマッチする正規表現を考えてみましょう。あ.たと書けばいいのです。これなら、「あした」・「あなた」・「あAた」・「あ1た」等にマッチします。\w\wはアルファベット、数字、「_(アンダースコア)」にマッチします。\w\w\wは「pen」や「12A」、「_R_」にマッチします。\W(ダブリューが大文字!)\Wは\wの反対です。英数字と「_」以外にマッチします。\W\W\Wは「!!!」にマッチします。\s空白文字1文字を表します。ここでいう空白文字とは半角スペースだけではなく、改ページ、改行、復帰、タブにもマッチします。\sの正反対の動きをするのが、\Sです。改ページ、改行、復帰、タブを表す個別のメタキャラクターもあります。\t\d「0123456789」のうち数字1文字にマッチします。2桁の数字は\d\dと表します。これは56や99などあらゆる2桁の数字にマッチします。\Dは\dとは逆のメタキャラクタです。数字以外の1文字にマッチします。「^」と「$」^は行頭を表します。文字そのものを表すわけではありません。^あとすれば、「あ」ではじまる全ての文字列にマッチします。反対に$は行末を意味します。これも文字そのものではありません。$とすると行末が「です。」で終わる全ての文字列にマッチします。\b単語境界の空文字を表します。理解しにくいメタキャラクターですね。単語境界はディスプレイ上には表示されない概念的な区切りのことです。apple\bはappleには一致しますが、applesには一致しません。文字「e」と文字「s」の間に、単語境界の空文字がないためです。動作環境によっては\bではなく\yが用いられることがあります。**は直前に置かれている文字のゼロ回以上の繰り返しを表すメタキャラクターです。例を見れば簡単ですよ。a*はaやaaaやaaaaaaaaaaaaaaにマッチします。0回以上の繰り返しなので、例えばlo*veはlveともマッチします。この場合、「o」がありませんが、これが0回の繰り返しです。loveやlooveともマッチします。++は直前に置かれている文字の1回以上の繰り返しを表します。0回の繰り返しは含まない点が*とは異なりますね。a+はaやaaaやaaaaaaaにマッチします。japa+nはjapanやjapaaaaaanにマッチしますが、0回の繰り返しには対応していないので、japnにはマッチしません。ここでもし、japa*nとすると、0回の繰り返しにも対応しているので、japnにもマッチします。AAAAにマッチします。AやAAAAAAAにはマッチしません。?直前の要素の0回または1回の出現を表します。Apples?はAppleとApplesの両方にマッチします。前者が直前の要素「s」の0回の出現を表します。後者は直前の要素「s」の1回の出現を表してしますね。[]文字クラスを表します。[]の中に入れられた文字のいずれか1文字にマッチします。[AB]はAかBのいずれかにマッチします。[ABCDE]は[A-E]と書いても全く同じ意味です。文字コードの小さい方を前に、大きい方を後ろにしなければならないので、[E-A]とか[9-0]と書くのは誤りです。[^A]と書くと文字クラスの否定を表し、A以外の文字と一致します。[^0-9]と書くと数字以外の1文字とマッチします。||の前後に記述した正規表現のどちらか一方に一致します。orange|appleと書くと、orangeまたはappleにマッチします。()を利用して、(本日は晴天なり|本日は雨天なり)明日は晴れるといいなとすると、本日は晴天なり明日は晴れるといいなと本日は雨天なり明日は晴れるといいなの2つにマッチします。()と\1()は上述の例でみたように、「範囲制限」の機能以外に「正規表現に一致した文字列を別のメタキャラクタに保存する」という機能があります。「なんのこっちゃ?」と思われるかもしれませんが例を見れば分かりやすいと思います。(a|b)とした場合、\1にaまたはbが格納されます。(apple|banana)私の好きな果物は\1とした場合、次の2つの文字列とマッチします。apple私の好きな果物はapplebanana私の好きな果物はbananaこのような機能を後方参照と呼びます。これで少し退屈な各メタキャラクタの解説は終わりです。ここからは実践編です。今まで習ったメタキャラクタを自由自在に組み合わせてより実践的な正規表現を学びましょう!実践的な正規表現まずは肩慣らしに簡単な正規表現を利用しようまずはウォーミングアップです。シンプルな正規表現である「.」を使って実践的な例を見てみましょう。こ....!とするこで、こんにちは!やこんばんわ!にマッチします。処理系によっては日本語を1文字表すのに..とドットを2個使う場合もあります。コメントをキャンセルメールアドレスが公開されることはありません。*サイト上に表示された文字を入力してください。