八月が終わり、九月に入った瞬間、令和ちゃんの気候入れ替えスイッチが発動しましたね。
急に涼しくなって、戸惑いを隠せないぐっちーです。
今回は皆様大好き、正規表現についてです。
以前につぎーさんがこちらの記事で記載していますが、今回はそちらも参考にしながら具体例を交えて書かせて頂こうと思います。
正規表現とは?
正規表現は、文字列の集合を一つの文字列で表現する方法の一つである。正則表現とも呼ばれ、形式言語理論の分野では比較的こちらの訳語の方が使われる。まれに正規式と呼ばれることもある。 もともと正規表現は形式言語理論において正規言語を表すための手段として導入された。
なるほど、よくわからん。
簡単にまとめると
「文字列」が「〇〇を含んでいる」や「〇〇と一致する」、「3桁の数字」等指定するパターンに当てはまるかどうかを判定する。
です!
正規表現では「メタ文字」と言われる文字を使います。
メタ文字とは、文字本来が持つ意味とは異なり、プログラムで特別な意味を持たせた文字のことを指します。
例えばHTMLで使われる「<」「>」がタグ(要素)を括り、開始や終了を意味することに使われたりしますよね!
下記いくつか例題を用意してみました。
習うより慣れろ。百聞は一見にしかず。さてみていきましょう。
1. または
「または」の対象が1文字の場合は、[ ]内にその候補を指定し、
「または」の対象が文字列の場合は、|で区切って指定します。
「A」または「B」 → [AB]
「赤」または「青」または「黄」 → [赤青黄]
「Mac」または「Windows」 → Mac|Windows
「東京」または「名古屋」または「大阪」 → 東京|名古屋|大阪
2. ○から×のどれか
対象が1文字の場合には、候補を–で範囲指定できます。
「0」から「9」のどれか → [0–9]
「あ」から「お」のどれか → [あ–お]
3. 文字の繰り返し
直前の文字やパターンの繰り返しを表現する特殊文字を「量指定子」と呼びます。
「+」または「*」の前に指定した文字を繰り返すという意味のメタ文字です。
「+」は1回以上の繰り返し、「*」は0回以上の繰り返しを意味します。
任意の1文字を表す「.」と組み合わせて使用する「.+」や「.*」とあわせて、覚えておくと便利です。
0回以上の繰り返し「*(アスタリスク)」
量指定子の一つが『*(アスタリスク)』です。これは、「直前の0回以上の繰り返し」を表現できます。
//正規表現
/Go*gle/
//マッチする文字列の例
- Ggle
- Gogle
- Gooogle
- Goooogle
- Gooooogle
//マッチしない
- Gpgle
- Gooopgle
1回以上の繰り返し「+(プラス)」
「+(プラス)」これはアスタリスクによく似た繰り返し表現になりますが、「直前のパターンの1回以上の繰り返し」を表現できます。
// 正規表現
/っ+て、まじかよ!/
// マッチする文字列の例
- って、まじかよ!
- っっっっって、まじかよ!
// マッチしない
- て、まじかよ!
パターンのグループの繰り返し
量指定子は、「直前の文字」に作用してしまいますので、複数の文字からなるパターン記述を繰り返しを表現するためには、丸カッコ「(」「)」を使ってグループ化する必要があります。
// 正規表現
/(オラ)+/
// マッチする文字列の例
- オラ
- オラオラオラオラオラオラ
- オラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラオラ
・・・どこぞの作品に出てきそうな感じですね。
まとめ
正規表現は他にも「5桁以下の半角数字」等指定することも可能です。
今回は基本的な使い方をまとめました。
次にはもう少しふみこんだ表現をご紹介できればと思います!