match
一致するものがない場合、null値が返されます。
正規表現にグループが指定されていないが、シーケンスが一致する場合は、長さ1の配列(配列の最初の要素として一致するテキスト)が返されます。
関数を使用するには、まず結果がnullかどうかを確認します。
結果がnullの場合、シーケンスはまったく一致しません。
シーケンスが一致した場合、配列が返されます。
正規表現にグループ(カッコの集合で指定)がある場合、それぞれの内容が配列に返されます。
正規表現一致の要素[0]は一致する文字列全体を返し、一致グループは要素[1](最初のグループは[1]、2番目の[2]など)から開始します。
この構文は、JavaのPatternクラスのリファレンスにあります。
Processingで使用するmatchの使い方は以下の通りです。
String s = "Inside a tag, you will find <tag>content</tag>.";
String[] m = match(s, "<tag>(.*?)</tag>");
println("Found '" + m[1] + "' inside the tag.");
// コンソールに出力します:
// "タグ内に 'コンテンツ'が見つかりました。"
String s1 = "Have you ever heard of a thing called fluoridation. ";
s1 += "Fluoridation of water?";
String s2 = "Uh? Yes, I-I have heard of that, Jack, yes. Yes.";
String[] m1 = match(s1, "fluoridation");
if (m1 != null) { // nullでない場合、一致が見つかりました
// これは一致が見つかったのでコンソールに出力されます。
println("Found a match in '" + s1 + "'");
} else {
println("No match found in '" + s1 + "'");
}
String[] m2 = match(s2, "fluoridation");
if (m2 != null) {
println("Found a match in '" + s2 + "'");
} else {
// これは一致するものが見つからないため、コンソールに出力されます。
println("No match found in '" + s2 + "'");
}
図2:プログラム実行結果
〇matchの構文