LoginSignup
3
2

More than 5 years have passed since last update.

役立つかもしれない自作の正規表現

Last updated at Posted at 2015-06-10

前提

  • これは私個人のメモです。有用かもしれないので一般に公開します。
  • メモなのでこれから増えるかもしれません。増えないかもしれません。
  • ここで紹介する正規表現は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

参考

インデント以外の余計なスペースにマッチ

例えばコードを書いている時、スペースのみの行ができてしまったり、末尾にスペースが入ってしまう事がある。
そのスペースを置換するための正規表現。
空行にはマッチしない。

(?:(?![\r\n])\s)+(?=[\r\n]|$)
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2