FrontPage
概要 †
- いろいろ非直感的なのでテスト駆動的に確認すること
- 日本語に直すとよい
参考 †
文法 †
記述 | 意味 | 例 | . | 任意の1文字 | | ? | 直前の文字があるかないかどちらか | | ^ | 文頭 | | $ | 文末 | | * | 貪欲な1個以上マッチ | | + | 貪欲な1個以上マッチ | | *? | 控えめな0個以上マッチ | | +? | 控えめな1個以上マッチ | | {n,m} | n個以上m個以下。{n,}でn個以上、{,m}でm個以下を表す | | () | ひとまとまりとみなしてキャプチャ | | (?:) | ひとまとまりとみなさずキャプチャ | | [a-zA-Z0-9] | a-z, A-Z, 0-9の1文字 | | [ABC] | AもしくはBもしくはCの1文字 | | [^ABC] | A、B、Cのいずれでもない1文字 | | パイプ | パイプの前、もしくは後 | ABCパイプDEFで、ABCとDEFにマッチする | (?<=abc) | 肯定の後読み。abcの後にマッチする | | (?=abc) | 肯定の先読み。abcの前にマッチする | | (?<!abc) | 否定の後読み。abcという文字列以外の直前の位置にマッチする | | (?!abc) | 否定の先読み。abcという文字列以外の直後の位置にマッチする | | \b | 単語の区切り目 | ちなみに、\<と\>が「単語の先頭、末尾」にマッチ | \w | 英単語の構成文字 | | \s | 空白文字 | 環境依存 | \d | 数字 | | \B、\W, \S, \D | 小文字の逆の意味 | | \1, \2, ... | キャプチャされた順にその文字列がそのまま入る | |
イディオム †
最短マッチ †
- 正規表現の*?は最短のマッチという意味になる
- 基本的に*ではなく*?のほうが最短マッチで探索打ち切りなので早くなる傾向
- 正規表現の王道は、ちゃんとストラクチャっぽく書いてやること、そうじゃないと字面に騙されるので注意(だがめんどい)
- キャプチャしない(:?)の中にキャプチャ()が入っている場合、キャプチャが優先される。要するに、グルーピングしたいけどキャプチャしたくはないよ、というときに使う (\s*\w)+とかのようにグルーピング必須のことはあるからね
- 正規表現には??みたいなやつがあって、これも最短一致。
- 先読みとか後読みとかは、ただ「そこにあればよい」「そこになければよい」というマッチングなので注意
- JavaScriptでは正規表現を動的に作ることが出来る(当然)
|