2017-03-24 1 views
0

一致していないグループに関する情報を取得することは可能ですか?
私の正規表現では、私は二つのグループ:(\d+)-(\w+)を持っています。一致しなかったグループに関する情報を取得

どのグループが一致しなかったかに関する情報を取得したいと考えています。出来ますか?

答えて

0

代わりに(\d+)?-(\w+)?正規表現を使用してください。両方のグループはオプションで宣言されています。つまり、ハイフンが見つかるとすぐに一致します。 Matcher.matches()またはMatcher.find()を使用した後は、Matcher.group(n)と呼んで、どのグループが一致しているかを判断できます。一致していないグループはnullを返します。

0

変数には、検索するテキストが とtxtの文字列(キャプチャグループを含む)が含まれているものとします。

あなたが例えばを実行した後:

Pattern r = Pattern.compile(pat); 
Matcher m = r.matcher(txt); 

あなたはように第二のために第一取り込みグループ、 m.group(2)を取得するためにm.group(1)を使用してすることができます。

したがって、必要なキャプチャグループを読み取り、空であるかどうかを確認するだけです。

0

次の例のように、グループ毎にチェックしない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"); 
    } 
} 
関連する問題