2017-09-18 11 views
1

をここで見つける私のデータである:私は、二重パーセント%%で囲まれたすべてのオブジェクトを取得したいマッチャは()特定の繰り返しパターン

'%%case.r_object_id%%' and application_phase = '%%case.status%%' and rp.quality = '%%case.<reno_application_person>.<child>.quality%% 

、私たちは私の実装に基づいて3

を持って、マッチャー.find()は、文字列内の最初の%%と最後の%%を検索します。だから、ただ一つのループ。どのように正規表現やコードを調整して3つのマッチを得ることができますか?

Matcher matcher = Pattern.compile("(%%[^\"\n]+%%)").matcher(results); 

    while (matcher.find()) { 
       try { 
        matcher.appendReplacement(stringbuffer, getReplacementStringValue(matcher.group().replaceAll("%", ""))); 
       } catch (DocumentGeneratorException e1) { 
        e1.printStackTrace(); 
       } 
      } 

答えて

1

あなたは、この正規表現%%(.*?)%%をもしかして:答えを

String regex = "%%(.*?)%%"; 
Pattern pattern = Pattern.compile(regex); 
Matcher matcher = pattern.matcher(str); 

while (matcher.find()) {             
    System.out.println(matcher.group(1)); 
    //        ^------note to get the group one 
} 

出力

case.r_object_id 
case.status 
case.<reno_application_person>.<child>.quality 
+1

おかげで、このアプローチの作品を – Undisputed007

1

カスタムクラスの後に消極的数量詞を使用する場合は、パーサはダブル%%次の発生時に一致するのではなく、文字列全体を経る必要があります。"(%%[^\"\n]+?%%)"

+の後の疑問符に注意してください。設定が完了したら...

matcher.appendTail(stringbuffer)

はまたに覚えています!

ドキュメント

documentationの "数量" のセクションを参照してください。

関連する問題