前提
- これは私個人のメモです。有用かもしれないので一般に公開します。
- メモなのでこれから増えるかもしれません。増えないかもしれません。
- ここで紹介する正規表現はPHPの
preg_*
系関数(PCRE正規表現)で利用できるものになります。後方参照や再帰的パターンなども活用するため、他の正規表現環境で利用できるかは保障しません。 - 記載する正規表現は簡易検証済みです。ただし、検証漏れにより不正確な可能性があります。
- これは私個人のメモです。この正規表現を利用した結果について、私は一切の保障をしません。利用する場合は事前に検証・動作確認を行ってください。
ストレートクォーテーションマーク("
)で囲まれた、バックスラッシュ(\
)でエスケープ可能な文字列の抽出
"(?:[^"\\]|\\.)*"
シングルクォーテーション('
)で囲まれた、バックスラッシュ(\
)でエスケープ可能な文字列の抽出
'(?:[^'\\]|\\.)*'
PHPのヒアドキュメント・Nowdocにマッチ
<<<(?P<phpHeredocIdQuote>["']?)(?P<phpHeredocId>[a-zA-Z_][a-zA-Z0-9_]*)(?P=phpHeredocIdQuote)[\r\n][\s\S]*?[\r\n](?P=phpHeredocId)(?=;?[\r\n])
参考
HTMLのclass属性値の、余計なスペース文字にマッチ
文字列内の先頭と末端にある1文字以上のスペース、
および、単語を区切るスペースで、余計な2文字以上のスペースにマッチします。
置換処理にてマッチした箇所を削除することで、HTMLのclass属性値を簡単に最適化できます。
\A[ \t\n\f\r]+|[ \t\n\f\r]+(?=[ \t\n\f\r]|\z)
例
echo preg_replace(
'/\A[ \t\n\f\r]+|[ \t\n\f\r]+(?=[ \t\n\f\r]|\z)/',
'',
' xxx y z '
);
出力
xxx y z
参考
- HTML Standard #3.2.5.6 The class attribute
- HTML Standard #set of space-separated tokens
- HTML Standard #space characters
インデント以外の余計なスペースにマッチ
例えばコードを書いている時、スペースのみの行ができてしまったり、末尾にスペースが入ってしまう事がある。
そのスペースを置換するための正規表現。
空行にはマッチしない。
(?:(?![\r\n])\s)+(?=[\r\n]|$)