一致していないグループに関する情報を取得することは可能ですか?
私の正規表現では、私は二つのグループ:(\d+)-(\w+)
を持っています。一致しなかったグループに関する情報を取得
どのグループが一致しなかったかに関する情報を取得したいと考えています。出来ますか?
一致していないグループに関する情報を取得することは可能ですか?
私の正規表現では、私は二つのグループ:(\d+)-(\w+)
を持っています。一致しなかったグループに関する情報を取得
どのグループが一致しなかったかに関する情報を取得したいと考えています。出来ますか?
代わりに(\d+)?-(\w+)?
正規表現を使用してください。両方のグループはオプションで宣言されています。つまり、ハイフンが見つかるとすぐに一致します。 Matcher.matches()
またはMatcher.find()
を使用した後は、Matcher.group(n)
と呼んで、どのグループが一致しているかを判断できます。一致していないグループはnull
を返します。
変数には、検索するテキストが とtxt
の文字列(キャプチャグループを含む)が含まれているものとします。
あなたが例えばを実行した後:
Pattern r = Pattern.compile(pat);
Matcher m = r.matcher(txt);
あなたはように第二のために第一取り込みグループ、 m.group(2)
を取得するためにm.group(1)
を使用してすることができます。
したがって、必要なキャプチャグループを読み取り、空であるかどうかを確認するだけです。
次の例のように、グループ毎にチェックしないnull
かどうかを確認することができます
String input = "your input";
Pattern pattern = Pattern.compile("(\\d+)-(\\w+)");
Matcher matcher = pattern.matcher(input);
List<String> reslt = new ArrayList<>();
while (matcher.find()) {
//check first group
if (matcher.group(1) != null) {
System.out.println("match");
}else{
System.out.println("not match");
}
//check second group
if (matcher.group(2) != null) {
System.out.println("match");
}else{
System.out.println("not match");
}
}