0

可能なすべての一致を配列リストの戻り値に取得しようとしていますが、グループが regexMatcher で呼び出されると、最後の結果のみが返されます。

すべての一致を文字列、配列、またはその他のタイプの変数に取得するにはどうすればよいですか?

while ( regexMatcher.find() ){
if (regexMatcher.group().length() != 0){
  returnvalue.add(regexMatcher.group());
  Writer.println(returnvalue.add);
}
4

1 に答える 1

2

私が理解したことから、 String"John writes about this, and John writes about that""(John)([^,]*)"pattern があり、文字列内のパターンの各一致を ArrayList の要素として返したいとしますreturn Value

この場合、そのような一致が 2 つあり"John writes about this""John writes about that". もしそうなら、次の短いプログラムはまさにそれを与えます。必要に応じてコードを変更してみてください。

import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

class testCode
{
    public static void main(String args[])
    {
        String text = "John writes about this, and John writes about that";
        String patternString1 = "(John)([^,]*)";

        Pattern pattern = Pattern.compile(patternString1);
        Matcher regexMatcher = pattern.matcher(text);

        List<String> returnValue= new ArrayList<String>();

        while(regexMatcher.find())
            if(regexMatcher.group().length() != 0)
                returnValue.add(regexMatcher.group());

        for(int i=0; i<returnValue.size(); i++)
            System.out.println(returnValue.get(i));
    }
}

出力:

John writes about this
John writes about that
于 2013-03-04T04:11:53.023 に答える