いまさらながらに正規表現を勉強したのでまとめてみた。
なお、サンプル作製にあたり、以下のサイトを参考にした。
といっても、トライアンドエラーの試行錯誤が必要だったけど・・・・
正規表現サンプル集
http://hodade.adam.ne.jp/seiki/
PHP 基礎編9 – 正規表現、マッチ、置き換え、ereg、eregi、eregi_replace – SAK Streets
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k09.htm
カッコに囲まれた値の検索(すべての文字)
\(.+?\)
検索結果:
○ (1234)
○ (abcd)
○ ( 1234 )
○ ( 12 34 )
○ ( abcd )
○ ( ああああ )
カッコに囲まれた値の検索(半角数字)
\(\d+?\)
検索結果:
○ (1234)
× (abcd)
× ( 1234 )
× ( 12 34 )
× ( abcd )
× ( ああああ )
カッコに囲まれた値の検索(半角数字のみ+スペース含む)
\([\s\d]+?\)
検索結果:
○ (1234)
× (abcd)
○ ( 1234 )
○ ( 12 34 )
× ( abcd )
× ( ああああ )
日付の検索
\d{4}[-/._]\d{1,2}[-/._]\d{1,2}
検索結果:
○ 2011/01/01
○ 2011/1/1
× 2011 / 01 / 01
× 2011 / 1 / 1
○ 2011-01-01
○ 2011-1-1
× 2011 - 01 - 01
× 2011 - 1 - 1
○ 2011.01.01
○ 2011.1.1
× 2011 . 01 . 01
× 2011 . 1 . 1
○ 2011_01_01
○ 2011_1_1
× 2011 _ 01 _ 01
× 2011 _ 1 _ 1
× 2011//01/01
× 2011--01-01
× 2011..01.01
× 11/01/01
時間の検索(欠点あり)
[\s]([0-9]|[0-1][0-9]|[2][0-3])(:|-|\.)([0-9]|[0-5][0-9])(:|-|\.)([0-9]|[0-5][0-9])[\s]
※時間文字列の前に空白スペースが入ってしまう。
検索結果:
○ 2011/01/01 11:11:11
○ 2011-01-01 11-11-11
○ 2011.01.01 11.11.11
× 2011/01/01 11 11 11
○ 2011/01/01 21:11:11
× 2011/01/01 25:11:11
○ 2011/01/01 01:01:01
○ 2011/01/01 0:0:0
○ 2011/01/01 1:1:7
○ 2011/01/01 1:1:7 ←最終文字が半角空白
× 2011/01/01 1:1:70
○ 2011/01/01 23:59:59
○ 2011/01/01 00:00:00
時間の検索(欠点あり)
\d{1,2}?(:|-|\.)\d{1,2}(:|-|\.)\d{1,2}
※「△」の文字列は日付部分もマッチしてしまう。
検索結果:
○ 2011/01/01 11:11:11
△ 2011-01-01 11-11-11
△ 2011.01.01 11.11.11
× 2011/01/01 11 11 11
○ 2011/01/01 21:11:11
○ 2011/01/01 25:11:11
○ 2011/01/01 01:01:01
○ 2011/01/01 0:0:0
○ 2011/01/01 1:1:7
○ 2011/01/01 1:1:7 ←最終文字が半角空白
○ 2011/01/01 1:1:70
○ 2011/01/01 23:59:59
○ 2011/01/01 00:00:00