正規表現の基本
更新日:2022-12-26
任意の文字列の中から、特定のパターンを持った文字列を検索したい時や、 与えられた文字列が、特定のパターンに適合するかを判定したい場合などは 正規表現を使います。 正規表現とは、特定の文字列をその文字列を構成する条件で表現したものです。
例えば、ある文章から、世紀を表す「00th Century」という文字列を全て検索したいとします。 「00th Century」という文字列を構成する条件を考えてみます。
- 先頭に1桁もしくは2桁の数字が来る
- 2文字目もしくは3文字目から「th」もしくは「nd」「rd」が続く(1stや2nd、3rdの場合を考慮する)
- 4文字目もしくは5文字目に空白文字が来る
- 5文字目もしくは6文字目にCenturyが来る
という感じで表現できそうです。 では、これを正規表現で表すと、
[0-9]?(st|nd|rd|th)\sCentury
となります。
正規表現一覧
おもな正規表現は下記になります。
| 特殊文字 | 意味 | 例 | マッチするもの |
|---|---|---|---|
| . | 任意の一文字 | c.t | catやcutなどにマッチ |
| * | 直前の文字の0回以上の繰り返し | w* | wwやwwwなどにマッチ |
| [] | []内の文字のいずれか1文字(文字クラス) -で範囲を指定、^で否定 | [abc] | aかbかc |
| ^ | 行頭 | ^Hello | Helloで始まる文字列 |
| $ | 行末 | world.$ | world.で終わる文字列 |
| \ | 直後の文字を普通の文字として処理する | \$5 | $5という文字列として扱う |
| | | 選択肢 | st|nd|rd|th | stまたはndまたはrdまたはth |
| ? | 0回あるいは1回の繰り返し | [0-9]? | 0から9の一桁の数字または00から99までの2桁の数字 |
| + | 1回以上の繰り返し | 1+ | 11や111、1111など |
| {n} | n回の繰り返し | 9{3} | 999 |
| {n,m} | 最低n回、最高m回の繰り返し | 9{3,5} | 999,9999,99999 |
| {n,} | n回以上の繰り返し | 9{3,} | 9999,99999など |
正規表現に関するphpの関数
preg_match()関数
preg_match()関数は引数を2つ取り、 第一引数で与えられたパターンが第二引数にマッチすれば1を、しなければ0を返します。 第一引数のパターンは"/ /"で囲みます。
preg_match("/パターン/","文字列");
「00th Century」がある文章の中に含まれるかを判定する場合は、
preg_macth("/[0-9]?(st|nd|rd|th)\sCentury/","20th Century Boy");
//1(マッチした)
preg_replace()関数
preg_replace()関数は、パターンにマッチした文字列をすべて指定の文字列に変換します。
preg_replace("/パターン/","文字列");
preg_replace("/<.*?>/","tag","<h1>Hello, World.</h1>");
//<h1>をtagに置き換える
preg_split()関数
preg_sprit()関数は、パターンにマッチした文字列のみを取り出し、配列として返します。
preg_split("/パターン","文字列");
例えば、文字列「at Spring In 2022.」という文字列から、数字だけを取り出したい場合は、以下のように書きます。
preg_split("/[0-9]*/","at Spring In 2022.");
//array('2','0','2','2')
#基礎文法
コメントはこちらから
※コメント内容は公開されますので、個人情報など公開されてはいけない情報は投稿しないでください。