java 正規表現にマッチする文字列が含まれているかを判定する
javaで、正規表現にマッチする文字列が含まれているかを判定する手順を記述してます。
環境
- OS windows11 home
- java 17.0.2
手順
指定した正規表現にマッチする文字列が含まれているかを判定するには、「Pattern.compile」と「find」を使用します。
Pattern p = Pattern.compile("文字列");
Matcher m1 = p.matcher("文字列");
m1.find(); // 判定
実際に、使用してみます。
import java.util.regex.*;
public class App {
public static void main(String[] args) throws Exception {
String reg = "[0-9]{3}"; // 3文字の半角数字
Pattern p = Pattern.compile(reg);
Matcher m1 = p.matcher("12345");
System.out.println(m1.find()); // true
Matcher m2 = p.matcher("25");
System.out.println(m2.find()); // false
Matcher m3 = p.matcher("abcde");
System.out.println(m3.find()); // false
Matcher m4 = p.matcher("abc258def");
System.out.println(m4.find()); // true
}
}
判定されていることが確認できます。
見つかった位置の取得
見つかった最初や最後の位置は「start」や「end」を使用すれば取得することが可能です。
見つかった文字列を取得するには「group」を使用します。
import java.util.regex.*;
public class App {
public static void main(String[] args) throws Exception {
String reg = "[2-9]{3}"; // 3文字の2から9の半角数字
Pattern p = Pattern.compile(reg);
Matcher m1 = p.matcher("12345");
System.out.println(m1.find()); // true
System.out.println(m1.start()); // 1
System.out.println(m1.end()); // 4
System.out.println(m1.group()); // 234
}
}
複数実行
findは実行するたびに、次の位置にある文字列を取得します。
import java.util.regex.*;
public class App {
public static void main(String[] args) throws Exception {
String reg = "[0-9]{3}"; // 3文字の2から9の半角数字
Pattern p = Pattern.compile(reg);
Matcher m1 = p.matcher("012345");
System.out.println(m1.find()); // true
System.out.println(m1.start()); // 0
System.out.println(m1.end()); // 3
System.out.println(m1.group()); // 012
System.out.println(m1.find()); // true
System.out.println(m1.start()); // 3
System.out.println(m1.end()); // 6
System.out.println(m1.group()); // 345
}
}
範囲を超えると「false」が返ります。
import java.util.regex.*;
public class App {
public static void main(String[] args) throws Exception {
String reg = "[0-9]{3}"; // 3文字の2から9の半角数字
Pattern p = Pattern.compile(reg);
Matcher m1 = p.matcher("012345");
System.out.println(m1.find()); // true
System.out.println(m1.start()); // 0
System.out.println(m1.end()); // 3
System.out.println(m1.group()); // 012
System.out.println(m1.find()); // true
System.out.println(m1.start()); // 3
System.out.println(m1.end()); // 6
System.out.println(m1.group()); // 345
System.out.println(m1.find()); // false
}
}
「reset」を使用することで、最初の位置から判定することが可能です。
import java.util.regex.*;
public class App {
public static void main(String[] args) throws Exception {
String reg = "[0-9]{3}"; // 3文字の2から9の半角数字
Pattern p = Pattern.compile(reg);
Matcher m1 = p.matcher("012345");
System.out.println(m1.find()); // true
System.out.println(m1.start()); // 0
System.out.println(m1.end()); // 3
System.out.println(m1.group()); // 012
System.out.println(m1.find()); // true
System.out.println(m1.start()); // 3
System.out.println(m1.end()); // 6
System.out.println(m1.group()); // 345
m1.reset();
System.out.println(m1.find()); // true
System.out.println(m1.start()); // 0
System.out.println(m1.end()); // 3
System.out.println(m1.group()); // 012
}
}
-
前の記事
javascript 数値をアンダーバーで区切って見やすくする 2022.05.20
-
次の記事
gitlab タイムゾーンを設定する 2022.05.20
コメントを書く