2016-03-29 25 views
0

文字列内のFreemarker FTLタグを無視する正規表現を作成しようとしています。 私は例"Hi, [#if gender="Male"]Mr[#elseif]Mrs[/#if] ${name} I've a special offer for you."Freemarker FTLタグを削除するJava正規表現

のテキストとFTL tagsでテンプレートをした私はFTLタグ、[#something]パターンを持っているので、タグのみを交換したい:私はusings角括弧構文です。交換が"Hi, Mr Mrs ${name} I've a special offer for you."

+0

サンプルstrのためでReplaceAll後に予想される出力とは何ですか? "Mr/Mrs"をそのまま残すか、 '$ {name}'のように$ {name}を表示したいですか? – dambros

+0

私は期待した最終結果を明確にするために質問を編集しました。ありがとう – drenda

答えて

2

以下になった後

理想的には、私は「myString".replaceAll("regex","");

を呼び出す必要がありますが、私は使用する権利正規表現を見つけることができませんよ。

私が欲しい、最終的な文字列の結果が得られますパターンは、あなたが期待する何をすべき:

\[/?#(.+?)\]

Tエストケース:

public class Test { 

    private static final String PATTERN = "\\[/?#(.+?)\\]"; 
    private static final String TEXT = "Hi, [#if gender=\"Male\"]Mr[#elseif]Mrs[/#if] ${name} I've a special offer for you."; 

    public static void main(String[] args) { 
     String out = TEXT.replaceAll(PATTERN, ""); 
     System.out.println(out); 
    } 

} 

出力: Hi, MrMrs ${name} I've a special offer for you.

+0

そのパターンは[]内では何も取らない、ちょうど[#]。また、。+? * – Ulises

+0

#部分についてはあなたが正しいので、答えを編集します。一方、+? for *は同じ結果を生成しません。すなわち、指定されたStringの場合、 '$ {name} $ {Special} 'を返します。 – dambros

+0

あなたは正しいですか?熱心な表情を表現に加える – Ulises

1

これはそれを行う必要があります。

public static void main(String[] args) { 
    String template = "<html>[BR]\n" 
         + "<head>[BR]\n" 
         + " <title>Welcome!</title>[BR]\n" 
         + "</head>[BR]\n" 
         + "<body>[BR]\n" 
         + " [#-- Greet the user with his/her name --][BR]\n" 
         + " <h1>Welcome ${user}!</h1>[BR]\n" 
         + " <p>We have these animals:[BR]\n" 
         + " <ul>[BR]\n" 
         + " [#list animals as animal][BR]\n" 
         + " <li>${animal.name} for ${animal.price} Euros[BR]\n" 
         + " [/#list][BR]\n" 
         + " </ul>[BR]\n" 
         + "</body>[BR]\n" 
         + "</html>"; 

    System.out.println("************ORIGINAL TEMPLATE**************"); 
    System.out.println(template); 
    System.out.println("************REPLACED TEMPLATE**************"); 
    System.out.println(template.replaceAll("\\[/?#(.*?)\\]", "\u001B[33mREPLACEMENT\u001B[0m")); 
} 
関連する問題