私はJavaで特定のテキストを持っており、パターンとマッチャーを使ってその中から何かを抽出したいと考えています。これは私のプログラムです: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");
それは「私」と「ジョン」は、異なるライン上にあることから、何かをつかむしません。これをどうすれば解決できますか?
あなたは 'itemLines.append(text.substring(matcher.start()、matcher.end()) + "\ n" を)変更する必要があります;' itemLines.append(matcher.group())に ' ; itemLines.append( '\ n'); ' 文字列バッファを手元に持っているときに+を使用して文字列連結を行うべきではありません。また、私はStringBufferの代わりにStringBuilderを使用します。 –