すぐ使える!正規表現サンプル集
〜 お勉強編 〜
Google
WWW を検索 hodade.com を検索

      このエントリーをはてなブックマークに追加

最短一致について

「.*」や「.+」を使うと、限りなく連続した文字を表します。
これは非常に便利なのですが、予想以上に長くマッチして、思ったように動かないことがあります。
これを解決するためには「?」を付加して最短一致するように仕向ける方法があります。

また、ここで説明する「?」は「直前の文字の0回または1回に一致」とは違います。
文字は同じですが、まったくの別物です。(記述する位置で見分けてください。)


たとえば、HTMLのタグを消す場合、このように書いたとします。(Perlの置換文法)

s/<.+>//g

これでタグは消えるのですが、タグだけではなく、タグに挟まれた間の文字まで消してしまいます。(下線部分)

<P>abc</P>

理由は最長一致モードで動作しているからです。
動作をみると、途中に「>」が出てきているのですが、そこでは止まらず、最後の「>」までマッチしています。
つまり最長一致とは、できるだけ長くマッチングさせるという意味になります。

これを防ぐためには、以下のように、「>」の前に「?」(最短一致記号)をつけます。

s/<.+?>//g

こうすることにより「<」の後に出てくる、最初の「>」までとなり、タグ1つ分しか消さなくなります。
下線部分のようにタグだけにマッチングします。

<P>abc</P>

<<前のステップへ 次のステップへ>>




行末の空白を削除する正規表現もあります。

1.正規表現とはなにか?
正規表現を簡単に説明すると?

2.正規表現を使う準備
まずはエディタの設定

3.正規表現サンプル集
【検索編】

検索で使える正規表現

4.正規表現サンプル集
【置換編】

置換で使える正規表現

5.正規表現のお勉強
正規表現で検索
少し高度な検索
文字列置換
最短一致について
エスケープ文字のこと
上から順番にだんだん難しくなります

6.エディタの強調表示でテキストに色づけ
色つきで見やすくできます

7.プログラムで正規表現を使う
各種プログラム言語でも使えます

8.ナイスな記事集
ここよりスゴイ正規表現がある


Since 2005.09.30 / HODADE SYSTEMS / Update 2010.03.30