2017-05-28 8 views
0
while (matcher.find()) { 
    if (matcher.group(matcherGroup) != null) occurrence++; 
} 
return occurrence; 

これは特定のグループの一致数を検索するために使用しているコードです。しかし、matcher.group(matcherGroup1, matcherGroup2)のような機能がなく、複数のグループまたはすべてのグループを検索するためのmatcher.group(null)もありません。REGEX matcher任意/すべてのグループ

私はLinkグループ(配列を1つにグループ化するのは愚かです)または複数のグループを読みましたか?

ありがとうございました

+0

最終目標は何ですか。例を教えてください。 –

答えて

0

独自のmatcherGroup実装を記述できませんか?あなたが提供したリンクはc#です。

私は、単一の文字列を取り、複数のRegExpパターンと一致させる単純なJava実装を作成しました。一致の数が返されます。

また、何をしようとしているのかをさらに詳しく説明してください。

package com.chocksaway; 

import java.util.ArrayList; 
import java.util.List; 
import java.util.regex.Pattern; 

class SingleMatcher { 
    private Pattern pattern; 
    private java.util.regex.Matcher matcher; 
    private boolean found; 

    SingleMatcher(String input, String inputPattern) { 
     pattern = Pattern.compile(inputPattern); 
     matcher = pattern.matcher(input); 

     if (matcher.find()) { 
      this.found = true; 
     } 
    } 

    boolean getFound() { 
     return this.found; 
    } 
} 

class MatcherGroup { 
    private int matchedOccurances; 

    MatcherGroup(String input, List<String> multipleInputPattern) { 
     for (String inputPattern : multipleInputPattern) { 
      SingleMatcher eachSingleMatcher = new SingleMatcher(input, inputPattern); 
      if (eachSingleMatcher.getFound()) { 
       matchedOccurances++; 
      } 
     } 
    } 

    int getMatchedOccurances() { 
     return this.matchedOccurances; 
    } 
} 

/** 
* Author milesd on 28/05/2017. 
*/ 
public class RegExpMatcher { 
    public static void main(String[] args) { 
     SingleMatcher singleMatcher = new SingleMatcher("123", "\\d\\d\\d"); 
     System.out.println(singleMatcher.getFound()); 

     List<String> inputPatternList = new ArrayList<String>(); 
     inputPatternList.add("\\d\\d\\d"); 
     inputPatternList.add("John"); 

     MatcherGroup matcherGroup = new MatcherGroup("John", inputPatternList); 
     System.out.println(matcherGroup.getMatchedOccurances()); 

    } 
} 
関連する問題