2016-03-29 26 views
0

Bir String içerisinde Freemarker FTL etiketlerini yok saymak için bir regexp oluşturmaya çalışıyorum. Ben sadece FTL etiketlerini [#something] desen var bu yüzden sadece etiketleri değiştirmek istediğiniz örnek "Hi, [#if gender="Male"]Mr[#elseif]Mrs[/#if] ${name} I've a special offer for you."Java regexp, Freemarker FTL etiketlerini kaldırmak için

için metin ile bir şablon ettik ve FTL tags: Ben usings köşeli ayraç sözdizimi değilim.

İdeal myString".replaceAll("regex","");

"aramak gerekir ama kullanmak doğru Regexp'i bulmak mümkün değilim.

Ben değişiminden sonra elde istiyorum nihai Dize sonucudur aşağıdaki "Hi, Mr Mrs ${name} I've a special offer for you."

+0

örnek str için replaceAll sonra beklenen çıkışı nedir? "Bay/Bayan" ı saklamak mı, yoksa sadece "Merhaba, $ {name}" gibi $ {name} 'i göstermek ister misiniz? – dambros

+0

Beklediğim nihai sonucu açıklığa kavuşturmak için soruyu düzenledim. Teşekkürler – drenda

cevap

2

desen beklediğiniz yapmalı:

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

T est durum:

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

} 

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

+0

bu model [] değil, [#] içinde hiçbir şey almayacaktır. Ayrıca,. Sadece olabilir. * – Ulises

+0

# bölüm ile ilgili haklısınız ve cevabı düzenleyecektir. Diğer taraftan + yerine? * için aynı sonucu üretmeyecek. Yani, verilen String için, "Merhaba, $ {name} sizin için özel bir teklifim var." – dambros

+0

haklısınız, ekleyeceksiniz. İfade için sabırsızlanıyor – Ulises

1

Bu yapmalıyım:

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")); 
} 
İlgili konular