2016-03-29 3 views
0

Я пытаюсь создать регулярное выражение, чтобы игнорировать теги Freemarker FTL в String. Я шаблон с текстом и FTL tags, например "Hi, [#if gender="Male"]Mr[#elseif]Mrs[/#if] ${name} I've a special offer for you."Java regexp для удаления тегов Freemarker FTL

Я хочу заменить только теги FTL, так что только теги, которые имеют [#something] шаблон: Я usings синтаксиса квадратных скобок.

В идеале я должен назвать "myString".replaceAll("regex","");

, но я не могу найти правильный регулярное выражение для использования.

Окончательный результат строки Я хочу получить после замены является "Hi, Mr Mrs ${name} I've a special offer for you."

+0

Что ожидаемый выход после replaceAll на ул образца? Вы хотите сохранить «Mr/Mrs» или просто показать $ {name}, например 'Hi, $ {name}'? – dambros

+0

Я отредактировал вопрос, чтобы уточнить конечный результат, который я ожидаю. Спасибо – drenda

ответ

2

Следующая шаблон должен делать то, что вы ожидаете:

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

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

Вы правы относительно # части и отредактируете ответ. С другой стороны, заменяя +? для * не приведет к такому же результату. то есть для данной строки, она вернет 'Hi, $ {name} У меня есть специальное предложение для вас.« – 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")); 
} 
Смежные вопросы