LoginSignup
0
1

More than 1 year has passed since last update.

正規表現の利用例

Last updated at Posted at 2022-05-31

文字列の集合を表す汎用的な記法です。
正規表現などで表される文字列に合致する文字列を探すことを、パターンマッチと言います。 Java、Perl、Ruby、Python などの言語は正規表現を扱うことができるため、 パターンマッチを行うプログラムを容易に作成することができます。

利用する文字とパターン

メタ文字

正規表現では「メタ文字」という特殊な意味を持つ文字を使います。

種類 説明
. なんでもいい1文字
^ 行の先頭
$ 行の最後
[ ] 指定する文字を囲む
* 文字の繰り返し:直前の文字がないか、直前の文字が1個以上連続する
+ 文字の繰り返し:直前の文字が1個以上連続する
? 文字の繰り返し:直前の文字がないか、1つだけある
| いずれかの文字
( ) 検索できる文字をグループ化する

構文一致

種類 説明
X? X、1 または 0 回
X* X、0 回以上
X+ X、1 回以上
X{n} X、n 回
X{n,} X、n 回以上
X{n,m} X、n 回以上、m 回以下

|X??|X、1 または 0 回。条件に合う最短の部分に一致する|

メタ文字の検索

メタ文字自体を検索できるようにするには、文字の前に\を付加するか、[]で囲みます。

\. \[ \] \* \+ \? \| \( \)

行頭「^」と行末「$」自体を検索したい場合は2つ記述します。

^^ $$

利用例

なんでもいい1文字「.」

正規表現 検索できる例
私は.です 私は鳥です 私は馬です 私は0です
私は...が.. 私はうどんが嫌い 私は早起きが苦手

同じ文字の繰り返し「*」

直前の文字がないか、直前の文字が1個以上連続する

正規表現 検索できる例
おー*い おい おーい おーーーーい

同じ文字の繰り返し「+」

直前の文字が1個以上連続する

正規表現 検索できる例
おー+い おーい おーーい おーーーーい

同じ文字の繰り返し「?」

直前の文字がないか、1つだけある

正規表現 検索できる例
おー?い おい おーい
Window? Windows Window
Window ?98 Windows98 Windows 98

メタ文字の検索

正規表現 検索できる例
TEST\.LOG TEST.LOG
[^^A] ^とA以外の文字
[[A10] [,A,1,0のいずれか
[A\]] A,]のいずれか

※[ ] の中の先頭文字 ^ に続く ^ はその文字自体を否定します。
※[ ] の中で [ ] の文字を指定する場合は、[ はそのままで問題ありませんが、] の場合は ] と記述しないと誤検索します。

組み合わせた利用

正規表現 検索できる文字
[0-9;F]* 0-9の数字と;とFを*回以上繰り返す
^[0-9]{2}[;A-Z]* 行頭が0-9、2文字目が0-9、3文字目が;A-Zがないか・1回以上繰り返す
[A-Z][0-9]{3} 1文字目がA-Z、2文字目~4文字目が0-9
(A10)[0-9] A101、A102、A103などA10と数字
^([a-zA-Z0-9]{8,})$ 8文字以上の英数字
(\.co\.jp)$ 末尾が.co.jp
A[^A-Z]CCC 1文字目がA、2文字目に半角アルファベット以外の文字、3文字目CCC
^[A[\]^*+?|\\()] 行頭がA,[,],^,*,+?,|,\,(,)のいずれか

※^は1文字目に持ってくると、メタ文字として認識されます。

参考サイト

サルにもわかる正規表現入門
基本的な正規表現一覧
正規表現を可視化してまとめたチートシート:Qiita
正規表現を入力すると可視化してくれるサイト:regexper

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1