0

初期文字列は

System.out.println(myString)

このように見えます

Name: Sacha
Last name: Sidor
.............
Name: Masha
........

2 番目の名前、つまり Masha を取得しようとしています。

            Pattern pattern = Pattern.compile("(?:Name:.*?){2}\\n");
            Matcher matcher = pattern.matcher(myString);
            String secondName = "";
            while (matcher.find()) {
            secondName = matcher.group();
              }
            System.out.println(secondName); // prints nothing ???
4

1 に答える 1

3

Pattern.DOTALLフラグを使用して.、改行を含むすべての文字を一致させます。DOTALLフラグがないと、.改行に一致しません。

Pattern pattern = Pattern.compile("(?:Name:.*?)(?:Name: )([^\\n]+)", Pattern.DOTALL);
Matcher matcher = pattern.matcher(myString);
String secondName = "";
if (matcher.find())
    secondName = matcher.group(1);
System.out.println(secondName);
于 2013-10-12T04:19:48.087 に答える