- Home ›
- Ruby正規表現の使い方 ›
- 任意の文字と繰り返し(量指定子) ›
- HERE
直前の文字を0回か1回(?)
広告
メタ文字の1つであるクエスチョン(?)をパターンの中に記述すると、クエスチョンの直前にある文字が0回か1回現れた文字列にマッチします。0回でも可なので直前の文字が存在しなくてもマッチします。
例えば次のように使用します。
/Go?gle/
上記の場合、クエスチョン(?)は直前の文字(今回は「o」)に0回か1回現れたものにマッチします。(直前の文字が無い場合は、空文字にマッチしていることになります)。
マッチするもの:
Ggle Gogle
マッチしないもの:
Ggle Google Gooogle Gpgle
メタ文字のプラス(+)やアスタリスク(*)よりも、より限定的なものとなります。
サンプルプログラム
では簡単なプログラムで確認して見ます。
#! ruby -Ku require "kconv" def check(str) if /Go?gle/ =~ str then print(Kconv.tosjis("○") + str + "¥n") else print(Kconv.tosjis("×") + str + "¥n") end end print(Kconv.tosjis("「Go?gle」にマッチするかどうか¥n¥n")) check("Ggle") check("Gogle") check("Google") check("Goooooogle") check("Gmgle") check("Gomogle")
上記のプログラムを「test4-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。
( Written by Tatsuo Ikura )