Javaに特定のテキストがあり、パターンとマッチャーを使用してそこから何かを抽出したいと思います。これは私のプログラムです:
public String getItemsByType(String text, String start, String end) {
String patternHolder;
StringBuffer itemLines = new StringBuffer();
patternHolder = start + ".*" + end;
Pattern pattern = Pattern.compile(patternHolder);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
itemLines.append(text.substring(matcher.start(), matcher.end())
+ "\n");
}
return itemLines.toString();
}
このコードは、検索されたテキストが同じ行にある場合に完全に機能します。たとえば、次のようになります。
String text = "My name is John and I am 18 years Old";
getItemsByType(text, "My", "John");
すぐにテキストから「私の名前はジョンです」というテキストを取得します。ただし、私のテキストが次のようになっている場合:
String text = "My name\nis John\nand I'm\n18 years\nold";
getItemsByType(text, "My", "John");
「マイ」と「ジョン」は別の行にあるので、何も取得しません。どうすればこれを解決できますか?