正規表現の数学的記述があるそうですが、僕は忘れてしまいました。調べてわかったら書いておきます。とりあえずリファレンス。

ある文字列sが、正規表現rの形で表現できる場合、rはsにマッチするといいます。 勿論、普通の文字はその文字自身にマッチします。

一番単純なもの

.改行文字を除いた任意の1文字にマッチします。

例:Puki.とすると、PukiWikiにはPukiWまでマッチします。
また、Puki..とすると今度はPukiWiまでマッチします。

こりゃ簡単。

繰り返し表現

*直前の文字の0回以上の繰り返し表現にマッチします。
?直前の文字の0,1回の繰り返し表現にマッチします。
+直前の文字の1回以上の繰り返し表現にマッチします。

混乱しないようにしてください。(わかんなくなったらもう一度見ればいいもんね)また、これらは常に最長マッチ、つまり、可能な限りの繰り返しとマッチします。

例:abcccc,abc,abという3つの文字列があるとします。以下の正規表現にマッチする部分を太字で示します。

abccccabcab
abc*abcccc(最長マッチのため)abcab
abc?abcccc(ここでも最長マッチ)abcab
abc+abcccc(またも最長マッチ)abcab(マッチしません)

"+"と"*"の違いは、上の表のabがマッチするかしないかに現れているわけです。

逆に最短マッチを得たいときは、*?,+?を用います。 例:

abccccabcab
abc*?abccccabcab
abc+?abccccabcab(マッチしません)

どんどんいきましょ。

文字集合からの選択

[][]内に指定された文字集合内のいずれか1文字にマッチします。

例:[ct]akeはtakeとcakeのどちらにもマッチします。

[]が効力を発揮するのは、アルファベットの小文字のどれかとか、数字のどれかなどといった、連続するキャラクタにマッチさせる場合です。この場合は、-を用いて表現します。以下によく使われるものをあげておきましょう。

[0-9]数字1文字にマッチします。
[A-Z]アルファベットの大文字1文字にマッチします。
[a-z]アルファベットの小文字1文字にマッチします。
[A-Za-z]アルファベットの大文字にも小文字にも1文字マッチします。
[^a-z]このように、直前に^をつけると、指定された文字以外の文字にマッチします。つまりこの場合はアルファベットの小文字以外の文字1文字にマッチします。

今日はここまで。更新日2003-09-01 (月) 02:00:28。by A-Leo


回数の指定

{a}直前の文字のa回にマッチ
{a,}直前の文字のa回以上にマッチ
{a,b}直前の文字のa回以上b回以下にマッチ

例:a{3}はaaaという文字列にマッチします。
a{3,5}とすると、aaa、aaaa、aaaaaにマッチします。

繰り返しの*,+と同様に、この場合も?をつけることで最短マッチにすることができます。

例:a{3,}ならaaaaaaaaaaaと、すべてにマッチ
a{3,}?ならaaaaaaaaaaaと最初の3つだけにマッチ

位置指定


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2003-09-02 (火) 10:12:47