2016-03-29 12 views
0

Ich versuche eine Regexp zu erstellen, um Freemarker FTL-Tags in einem String zu ignorieren. Ich habe eine Vorlage mit Text und FTL tags zum Beispiel "Hi, [#if gender="Male"]Mr[#elseif]Mrs[/#if] ${name} I've a special offer for you."Java regexp, um Freemarker FTL-Tags zu entfernen

ich nur FTL-Tags ersetzen, so dass nur Tags, die [#something] Muster haben: Ich bin usings eckige Klammer Syntax.

Idealerweise sollte ich "myString".replaceAll("regex","");

aber ich bin nicht in der Lage die richtige regexp zu finden.

Der letzte String Ergebnis, das ich nach dem Austausch erhalten möchten, verwenden "Hi, Mr Mrs ${name} I've a special offer for you."

+0

Was ist die erwartete Ausgabe nach dem replaceAll für die Probe str? Möchten Sie den "Mr/Mrs" behalten oder nur den $ {name} anzeigen, wie 'Hi, $ {name}'? – dambros

+0

Ich habe die Frage bearbeitet, um das Endergebnis zu klären, das ich erwarte. Dank – drenda

Antwort

2

Das ist folgende Muster sollte das tun, was Sie erwarten:

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

T est Fall:

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); 
    } 

} 

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

+0

wird dieses Muster alles innerhalb [] nicht nehmen, nur [#]. Auch,. +? könnte einfach sein. * – Ulises

+0

Sie haben Recht bezüglich der # Teil und werden die Antwort bearbeiten. Auf der anderen Seite ersetzt +? for * wird nicht zum selben Ergebnis führen. d. h. für den gegebenen String, gibt es 'Hi, $ {name} zurück. Ich habe ein spezielles Angebot für Sie. – dambros

+0

Sie haben recht, indem Sie den? fügt eifrigen Blick auf den Ausdruck hinzu – Ulises

1

Dies sollte es tun:

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")); 
} 
Verwandte Themen