正規表現勉強会に参加しました

なんとなく苦手意識があって尻込みしていた正規表現。何とかとっかかりをつかみたくて、以前一緒に働いていたSEの方に勉強会を開いてもらいました。

忘れないようにメモがてら記事にします。

[...]

reg001.png

[]で囲まれた文字を1文字としてマッチする

ex:[a]でaに全てマッチ

.(ピリオド)

reg002.png

.(ピリオド)の後ろの任意の1文字にマッチ

ex:ae. の場合、先頭がaeで後ろの1文字が何であろうがマッチする 。

[...]?

reg003.png

[]で囲まれた1文字があるか無いかで判別する

ex:bon jovi → bon[ ]?jovi ※[]の中に半角スペースが1つ
ファーストネームとラストネームの間に半角スペースがあったらマッチ。全角スペースの場合はもちろんマッチしない。

[...]*

reg004.png

[]で囲まれた中の文字があるか無いかで判別する([]内の文字数は何文字でもマッチする)

ex;bon  jovi → bon[ ]*jovi

ファーストネームとラストネームの間が半角スペースならば何文字でもマッチする。全角スペースの場合はもちろんマッチしない。

[...]+

reg005.png

[]で囲まれた中の文字が1つ以上入っていればマッチ。

ex:bon jovi → bon[  ]+jovi ※[]の中には半角スペース1つと全角スペースが1つ
ファーストネームとラストネームの間に半角スペース、全角スペースのいずれか1つ以上あればマッチ。

[ ]{第1引数,第2引数}

reg006.png

[]で囲まれた中の文字が第1引数以上、第2引数までであればマッチ。

ex:bon  jovi → bon[ ]{2,3}jovi ※[]の中には半角スペース1つ
ファーストネームとラストネームの間の半角スペースが2つ以上で3つまでならばマッチ。4つの場合ははずれる。

  • ※-(ハイフン)にマッチさせたい場合は必ず先頭に。先頭以外に記述すると範囲指定になる。
  • ※量指定子は[]の外に記述されたものだけ。[]内に書かれたものは量指定子の意味をなさない。
  • ※量指定子とは?, +, *, {}の事。
  • ※ドットなどの文字にマッチさせるには?でエスケープする。
(...)

reg007.png

グループ化。文字の並びをグループ化する。グループ化されたものは全てキャプチャされ、1つの文字列として再利用可能。
グループ化するとグループ化した文字列の後に指定した文字列を差し込むような事が出来る。

ex:(aero)はaとeとrとoが並んだ文字列を1つとする。

  • reg008.png
  • reg009.png

グループ化した文字列の後ろに文字を追加した例

(...|...)

reg010.png

パイプラインで区切った文字の何れかにマッチ。

ex:(aer|mith) でaerを1グループ、mithを1グループとしてマッチする。

基礎的な所をざっと解説してもらいました。次はもう少し突っ込んだ所を教わろうと思います。