ワイルドカード
カテゴリー | 文字列操作 |
---|
ワイルドカード文字とその種類
ワイルドカード文字とは、「そこに何らかの文字が入る」ことを表す特別な文字。
普通の文字と組み合わせて使うことで、「Aから始まる文字列」「括弧で囲まれた文字列」など、文字列の形式を表現することができる。
任意の1文字
ワイルドカード文字?
は、
- どんな文字でもいいから「そこに1文字入る」
ことを表す。
任意の文字列
ワイルドカード文字*
(アスタリスク)は、
- どんな文字を含んでもいいから「そこに数文字入るかもしれない」
ことを表す。
*
には1文字以上という制約がないため、空文字にもマッチすることに注意。
こんな文字列、どう表現する?
文字数が決まっている場合
どんな文字が入るかはわからないが、文字数が決まっている場合は、?
を使うことで表現できる。
例:ハイフン区切り10桁の生年月日
"????-??-??"
は、次のような文字列を表す。
"2000-04-13"
"1997-11-19"
ある文字で終わる文字列
終わりの文字は決まっているが、その前にどんな文字がくるかがわからない場合は、*
を使う。
しかし、どんな文字かわからない部分に「最低何文字以上」といった制約を加えたい場合は、?
も合わせて使う。
「県」と県名
"*県"
は、次のような文字列を表す。
"県"
"青森県"
"和歌山県"
*
は空文字(0文字)も許容するため、ただの「県」も"*県"
にマッチする。
「青森県」や「和歌山県」などにのみマッチさせたい場合は、"?*県"
とすればよい。
?
を加えることで、「県」の前が1文字以上であることを表現できる。
注意:アスタリスクの貪欲さ
"?*県"
だとうまくいくが、"*?県"
だとうまくいかないことに注意。
たとえば、「青森県」の場合、
"?*県"
なら、?
が「青」、*
が「森」"*?県"
なら、*
が「青森」、?
に該当する文字なし
というように、何文字でもよい*
を先に置いてしまうと、*
が「県」の前のすべての文字を消化してしまい、?
にマッチする文字がなくなってしまうのだ。