* 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.
リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
浮子屋商店もよろしく。

正規表現講座/1 のバックアップ差分(No.3)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:間違いだらけの正規表現講座 level 1

#contents

* 正規表現って何 [#y1fe8cb8]

そもそも、正規表現って何?というのが最初の疑問だと思います。~
非常に単純に言ってしまえば、正規表現とは、

&size(20){「高機能な伏字」};

です。

例えば、「け○っぴ」と書いてあった場合、そこの○にはなんでもいいから1文字が~
入るものだと思いますよね。逆に言うと、「けろっぴ」「けのっぴ」「けぬっぴ」~
などが当てはまるのだ、と理解すると思います。

正規表現もそれと同じです。
ただし、コンピュータですので、○=1文字、よりももっと複雑な伏字が沢山用意されています。~
そこでややこしい記号の羅列になってしまい、多くの人が敬遠してしまうのでしょうね。~
でも、ただの超高機能な伏字なんだ、と思えばたいして難しくもありません。

* 正規表現には何ができるの? [#o66c9785]

じゃあ、正規表現を覚えると何かよいことがあるの?~
これが次の疑問ではないでしょうか。

率直に言って、テキスト編集をたくさん行う方以外には、あまりメリットはありません。~
また、テキスト編集と言っても、正規表現があなたの代わりに文章を書いてくれたりはしません。

その代わり、定型的なこと、例えば―
- 沢山のテキストファイルから、「」でくくられた部分だけを抜き出したい!
- テキストファイル中のURLっぽい文字列だけを抜き出したい!
- 「\s[数字]」という部分を、全部「(数字)」に置き換えたい!

というような作業は、正規表現を覚えれば、あなたが手でやるのの何万倍も早く、~
コンピュータが一瞬で片付けてくれます。


* 準備 [#o7e73c39]

まずは正規表現の練習に使えるものを用意しましょう。~
文章だけで見ていたってちっとも面白くありませんからね。

正規表現が使えるエディタ等ならなんでもいいです。~
ここでは拙作の「正規表現テスター」を使って説明することにします。


* マッチ [#pcf07807]

さて、正規表現の実際の説明に入る前に、用語を一つ覚えてください。~
それは、''「マッチ」''です。

さっき、伏字の例で、「け○っぴ」には、「けのっぴ」「けろっぴ」等が当てはまる、~
と言いましたが、それがつまり「マッチする」ということです。~
「正規表現にマッチする」=「正規表現に当てはまる」、と覚えてください。

「『けのっぴ』は『け○っぴ』にマッチする」と言う事ができます。

* 最初の記号 - 「.」 [#f332965c]

さて、今日は最初の記号を1つ覚えて終りにしましょう。~
最初の記号は、「.」です。「.」は半角ピリオドですよ。

これは、「なんでもいいから1文字」を表す正規表現です。~
ちょうど、さっきの伏字の例に挙げた、○と一緒ですね。

ですから、最初の例を正規表現で書けば、「け.っぴ」となります。~
そして、正規表現「け.っぴ」には、「けのっぴ」や「けろっぴ」がマッチします。~
「1文字」と限定されていますので、「けののっぴ」や「けっぴ」はマッチしません。

* 練習 [#u2f5c43a]

&attachref(./regex1.png,nolink);

では、実際に練習してみましょう。
正規表現テスターを立ち上げて、まずは右側のオプションを、画像と同じようにチェックしてください。~
そして、上の大きなテキストボックスに適当に言葉を入れて、その下、正規表現と書いてある右に、「け.っぴ」と入れてみます。~

できたら、その右の「テスト」ボタンを押してみてください。~
「け.っぴ」にマッチした文字列が、下に表示される筈です。

テキストや正規表現を色々変えて、試してみてください。~
例えば「け..っぴ」にするとどうなりますか。「け.っ.」ではどうでしょうか。

* 実用 [#v7eb2519]

さて、これであなたは、正規表現の記号を1個覚えたわけです。~
例えばエディタで、「○○○○年○○月」という文字列を探したい!というとき、~
もう何をすればいいか分かりますね。~

「正規表現で検索」のような機能を使って、「....年..月」と入れればよいのです。

* ちょっと脱線 [#m259e76c]

ところで、正規表現って、何で「正規表現」って言うんでしょうね。

元の英語では、「regular expression」なのですが、「regular」は、~
一定の、とか、通例の、とか、規則正しい、という意味のようです。

日本語の「正規」というのは、規則ではっきり決まっていること、~
というような意味のようですので、「規則がはっきり決まった表現」と取れば~
意味が分からなくもないのですが…

なんとなく、「正規表現」って言われると、じゃあ正規じゃない、裏ルートの~
表現があるのか、という気がしませんか。

* ご指摘などはこちらへ [#hd563d0d]

#comment