MW211 EXIT

devlog
正規表現/直前直後の組み合わせ
2012年03月28日
直前と直後に特定の文字があるもしくはないものを検索する組み合わせは以下の通り。
┌──┬─────┬─────┐
│    │   直前   │   直後   │
├──┼─────┼─────┤
│あり│ (?<=z)a  │ a(?=z)   │
├──┼─────┼─────┤
│なし│ (?<!z)a  │ a(?!z)   │
└──┴─────┴─────┘
※「a」と「z」は文字列の例(何の文字列でもよい)

「az,za,ay,ya」があったとしたら、上記の正規表現に該当するのは以下の通り。
┌──┬─────┬─────┐
│    │   直前   │   直後   │
├──┼─────┼─────┤
│あり│    za    │    az    │
├──┼─────┼─────┤
│なし│azとyaとay│zaとyaとay│
└──┴─────┴─────┘
但し、該当するとみなされる文字(検索文字)はそれぞれの「a」のみ。

ちなみに前後の文字も含みたい場合は以下の通り
┌──┬─────┬─────┐
│    │   直前   │   直後   │
├──┼─────┼─────┤
│あり│    za    │    az    │
├──┼─────┼─────┤
│なし│  [^z]a   │  a[^z]   │
└──┴─────┴─────┘
ただし、こちらは改行やら区切文字やらも該当してしまうので、
上記のように該当するものがはっきりするとは限らない。
→あくまで理論上の対比と考えてもらいたい
分類:正規表現