別の一致に含まれる正規表現一致を取得するにはどうすればよいですか?
同じ文内で、人の名前の後に市区町村が続くものと一致させようとしています。だから私はこれをやっています:
String regex="(Bob|Mary)\\b[^\\.\\?!]*?\\b(Paris|London)\\b.*?[\\.\\?!]";
Pattern pattern=Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher matcher=pattern.matcher("Bob and Mary are planning to go to Paris. They want to leave before July.");
これは、「ボブとメアリーはパリに行く予定です。」と一致し、正しいです。しかし、それは、実際には私が言及した最初の一致の一部である「メアリーはパリに行く予定です.」とは一致しません。「Mary」で始まるこの 2 番目のサブマッチを取得するにはどうすればよいですか?
while (matcher.find()){
System.out.println(matcher.group());
}
結果:
Bob and Mary are planning to go to Paris.
それは正しいです。しかし、次のような出力が期待されます。
Bob and Mary are planning to go to Paris.
Mary are planning to go to Paris.