ブログ

正規表現の使い方3(OR条件を用いたマッチ)

at_takumi.mizutani
2022年8月5日 15時31分

本記事で紹介する正規表現

本記事で紹介する正規表現の概要について下表にまとめます。

各正規表現の詳細な説明についてはその後に説明します。

正規表現 説明 正規表現の例 マッチする文字列
() ()内の文字列を1つのまとまりとして
正規表現を適用することができます
Armadillo-(IoT)?.* Armadillo-IoT_G4
Armadillo-IoT_G3L
Armadillo-640
| グループ内のいずれかの文字列とマッチします Armadillo-IoT_(A6E|G4) Armadillo-IoT_A6E
Armadillo-IoT_G4
[] []内で指定した文字のいずれかとマッチします Armadillo-IoT_G[1234] Armadillo-IoT_G1
Armadillo-IoT_G2
Armadillo-IoT_G3
Armadillo-IoT_G4
- 範囲指定した文字とマッチします Armadillo-IoT_G[1-4] Armadillo-IoT_G1
Armadillo-IoT_G2
Armadillo-IoT_G3
Armadillo-IoT_G4
[^] 指定した文字以外とマッチします Armadillo-IoT_G[^1-2] Armadillo-IoT_G3
Armadillo-IoT_G4
\ 正規表現文字とマッチします \*Armadillo\* *Armadillo*

文字列のグループ化

()を使用すると、()内の文字列を1つのまとまりとして正規表現を適用することができます。

以下の例では、"IoT"をグループ化し、そのグループが0個、又は1個存在する文字列とマッチすることになるので、Armadillo-IoT_G4、Armadillo-IoT_G3L、Armadillo-640、等とマッチします。

正規表現
Armadillo-(IoT)?.*
マッチする文字列
Armadillo-IoT_G4
Armadillo-IoT_G3L
Armadillo-640

いずれかの文字列とのマッチ

()と|を組み合わせて使用すると、グループ内のいずれかの文字列とマッチします。

以下の例では、A6EかG4のいずれかとマッチします。

正規表現
Armadillo-IoT_(A6E|G4)
マッチする文字列
Armadillo-IoT_A6E
Armadillo-IoT_G4

いずれかの文字とのマッチ

[]を使用すると、[]内で指定した文字のいずれかとマッチします。

以下の例では、1, 2, 3, 4とマッチすることになるので、G1、G2、G3、G4とマッチします。

正規表現
Armadillo-IoT_G[1234]
マッチする文字列
Armadillo-IoT_G1
Armadillo-IoT_G2
Armadillo-IoT_G3
Armadillo-IoT_G4

また、-(ハイフン)を使用することで文字の範囲指定をすることもできます。

以下の例では、1〜4の文字とマッチすることになるので、G1、G2、G3、G4とマッチします。

正規表現
Armadillo-IoT_G[1-4]
マッチする文字列
Armadillo-IoT_G1
Armadillo-IoT_G2
Armadillo-IoT_G3
Armadillo-IoT_G4

^を使用すると指定した文字以外とマッチします。

以下の例では、1〜2以外の文字とマッチすることになるので、G3、G4とマッチします。

正規表現
Armadillo-IoT_G[^1-2]
マッチする文字列
Armadillo-IoT_G3
Armadillo-IoT_G4

正規表現用文字とのマッチ

ここまで紹介してきた正規表現の文字は特別な意味をもっており、そのままではその文字自体を探すことができません。

そういった特別な文字を調べるためには\(バックスラッシュ)を使用します。

以下の例では、*Armadillo*とマッチします。

正規表現
\*Armadillo\*
マッチする文字列
*Armadillo*

正規表現についての記事

  1. 正規表現の使い方1(任意の文字とのマッチ)
  2. 正規表現の使い方2(連続文字とのマッチ)
  3. 本記事
  4. 正規表現の使い方4(grepによるファイル内文字列の検索)
  5. 正規表現の使い方5(sedによるファイル内文字列の加工)