PHP 正则表达式 (preg_match)

この記事では、PHPの正規表現関数preg_matchを使ったパターンマッチングについて詳しく説明しています。基本的な使い方から、特定の文字や文字列、繰り返しのパターン、任意の文字に対するマッチングまでをカバーしています。
正規表現をまとめてみる。

preg_match で使われる正規表現の書き方の前に
まずは、

<検索対象文字列が1行か?それとも複数行か?>

文字列の中からパターンに合致する部分を探し出す場合、その文字列が1行(改行文字が1つ)なのか、複数行(改行文字が複数)なのかで、マッチ演算子を適切に指定。

preg_match("/パターン/", 調べる文字列);

"/パターン/"  //文字列の1行目のみを調べる
"/パターン/g"  //複数行を調べる
"/パターン/s"  //改行文字を無視し、1行とみなして調べる

ついでに、

"/パターン/i"  //文字列の大文字・小文字を区別しない
"/パターン/is"  //大文字・小文字を区別せず、1行とみなして調べる




<基本>

preg_match は、文字列中に現れた最初のパターンのみを検出。

■文字・文字列

・「a」 にマッチ
preg_match("/a/", $string);

・「ab」 にマッチ
preg_match("/ab/", $string);

■先頭・末尾

・の先頭の 「a」 にマッチ
preg_match("/^a/", $string);

・行の末尾の 「a」 にマッチ
preg_match("/a$/", $string);

・行の先頭の 「a」 にマッチ(改行文字が現れる度に次の文字を調べる)
preg_match("/^a/g", $string);

・行が 「abcde」 にマッチ
preg_match("/^abcde$/", $string);

・文字列の先頭の 「a」 にマッチ
preg_match("/$Aa/", $string);

・文字列の末尾の 「a」 にマッチ
preg_match("/a$Z/", $string);

■繰り返し

・0個以上の 「a」
preg_match("/a*/", $string);

・1個以上の 「a」
preg_match("/a+/", $string);

・0個か1個の 「a」
preg_match("/b?/", $string);

・「a」に続いて、0個以上の 「b」
preg_match("/ab*/", $string);

・「a」に続く0個以上の 「b」で、最も短かいもの
preg_match("/ab*/", $string);

・1個から3個続きの「a」
preg_match("/a{1,3}/", $string);

・3個続きの「a」
preg_match("/a{3}/", $string);

・3個以上の「a」
preg_match("/a{3,}/", $string);

■任意の1文字

・(改行文字を除く)任意の1文字
preg_match("/./", $string);

・(改行文字を含む)任意の1文字
preg_match("/./s", $string);

・「a」 と 「b」 に任意の1文字(改行除)が挟まれている
preg_match("/a.b/", $string);

■[ ] 内の任意の1文字

・「a」 か 「b」 どちらか1文字
preg_match("/[ab]/s", $string);

・「a」 から 「z」 の1文字。アルファベット小文字
preg_match("/[a-b]/s", $string);

・「A」 から 「Z」 の1文字。アルファベット大文字
preg_match("/[A-Z]/s", $string);

・アルファベットの1文字
preg_match("/[a-zA-Z]/s", $string);

・アルファベット以外の1文字
preg_match("/[^a-zA-Z]/s", $string);

■エスケープシーケンス

?t  タブ
?n  改行
?w  アルファベットとアンダースコア
?W  アルファベットとアンダースコア以外
?s  空白文字
?S  空白文字以外
?12  ASCHII文字の8進数表記
?x811  ASCHII文字の16進数表記
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值