2014-01-12 4 views
0

Я пытаюсь отобразить отрывки из блога в результате поиска по тегу. В этих кратких параграфах было бы совсем не идеально иметь теги img или , поэтому я бы хотел, чтобы их разделили вместе с их содержанием.Матч-теги с регулярным выражением и их удаление в Java

Для этого моя идея состоит в том, чтобы соответствовать регулярному выражению тегов и затем заменять их пустой строкой. Так вот мой код:

protected static String removeTags(String s) 
    { 
     String reg = "<img .*>"; 
     String excerpt = s.replace(reg, ""); 
     System.out.println(excerpt); 
     return excerpt; 
    } 

код, кажется, работает очень хорошо, если в регулярном выражении не появляются символы, как *, <, >: на самом деле, если мое регулярное выражение просто img код делает его работа прекрасна и снимается. Я попытался использовать эквивалентные шаблоны, такие как \\w и другие, но все же кажется, что они не будут соответствовать коду. Что я делаю не так?

+0

Просто FYI: вы действительно не хотите [использовать регулярное выражение для разбора HTML] (http://stackoverflow.com/questions/590747/using-regular-expressions-to-parse-html-why-not). Вместо этого используйте синтаксический анализатор. – m0skit0

ответ

2

Если вы хотите использовать регулярное выражение в своем матче, вам необходимо использовать replaceAll() вместо replace().

Кроме того, вы, вероятно, не хотите использовать .*, поскольку * является жадным квантором и будет потреблять все до в ваших данных последнего >. Попробуйте .*?(неохотный квантор) или [^>]* вместо этого.

+0

Это подлый маленький '' ', спасибо. – haunted85

Смежные вопросы