php 正規表現のサンプル
2011/04/20
phpで使う正規表現のサンプル。
※もっと良い記述があるかも。気づいたり・指摘していただく度に修正していきます。
※もっと良い記述があるかも。気づいたり・指摘していただく度に修正していきます。
基本
0回以上と1回以上、0or1回のみ
- /d*a/
- 0回以上:「d」が0文字以上あり、その後に「a」がある。
- /d+a/
- 1回以上:「d」が1文字以上あり、その後に「a」がある。
- /d?a/
- 0or1回のみ:「d」が0文字もしくは1文字あり、その後に「a」がある。
最長一致
- /d.*a/
- 「d」のあとに任意の文字が0文字以上あり、最後に出現する「a」まで。
- /d.+a/
- 「d」のあとに任意の文字が1文字以上あり、最後に出現する「a」まで。
最短一致
- /d.*?a/
- 「d」のあとに任意の文字が0文字以上あり、最初に出現する「a」まで。
- /d.+?a/
- 「d」のあとに任意の文字が1文字以上あり、最初に出現する「a」まで。
- /d(.*?)a/
- 「d」のあとに任意の文字が0文字以上あり、最初に出現する「a」まで。(.*)でマッチする箇所を「$1」とかで抜き出したい場合。
サンプル
複数の半角スペース
- / +/
- 「 (半角スペース)」が1文字以上ある。
複数の空白
- /\s+/
- 全角・半角スペース・タブなどの組合せは関係無しで1文字以上。「半角スペースのあとにタブ」や「タブのあとに全角スペース、その後にタブ、半角スペース」とかも。
など特殊文字(エンティティ)とか
- /&(([a-zA-Z]{2,}[a-zA-Z0-9]*)|(#[0-9]{2,4})|(#x[a-fA-F0-9]{2,4}))?;/
- 特殊文字は「実体参照」と「コード参照」の2種類がある。
「実体参照」は「&」のあとに「アルファベットが2文字以上([a-zA-Z]{2,})」あり、その後に「アルファベットや数字が付く場合もあったり([a-zA-Z0-9]*)」して「;」で終わる。
「コード参照(10進数)」は「&#」のあとに数字が2~4桁([0-9]{2,4})あり「;」で終わる。「コード参照(16進数)」は「&#x」のあとに「a~f(大文字も同じ)」と数字が2~4桁([a-fA-F0-9]{2,4})あり「;」で終わる。
半角数字しか存在しない
- /^[0-9]+$/
- 最初から最後まで半角数字
最初に表示される「../」や「../../」とか
- /^(..\/)+/
- 最初が「../」で、1回以上「../」を繰り返す
※「()」で文字列を一つのグループにする。
特定のタグに囲まれた内容(scriptタグの場合)
- /<script.*?>(.*?)(<\/script>)/
- 「<script」で始まって「>」が出現。その後、適当な文字があったり無かったりして、最初に出現する「</script>」まで。
置換えのサンプル
特定のタグに囲まれた内容の中身に置換え
UTF8で大文字・小文字関係なく、<script>~</script>タグを中身だけに置き換える。
※「<script xxx>○○</script>」を「○○」に置き換える
- preg_replace('/<script.*?>(.*?)<\/script>/ui', "$1", $str);
- パターン文字列の「1番目の(.*?)」が「$1」になる。
特定の文字列に囲まれた箇所を特定の文字列に差換え
※「<script xxx>○○</script>」を「<script xxx></script>」に置き換え。
- preg_replace('/(<script.*?>).*?(<\/script>)/ui', "$1$2", $str);
- パターン文字列の「1番目の(<script.*?>)」が「$1」、「2番目の(<\/script>)」が「$2」。
特定の文字に他の文字を付け足す
「。」と「、」のあとに半角スペースを追加する。
- preg_replace('/(。|、)/u', "$1 ", $str);
- パターン文字列の「。」もしくは「、」が「$1」になる。