正则表达式,用于从字符串中删除没有制表符的HTML标记

时间:2018-01-30 07:56:44

标签: java html regex

我目前正在为字符串<b>abc<br/></b>xy<i>abcd<br/></i><th>ab<br/></th>wvx等的以下要求生成正则表达式。

我的要求是删除<><b></b><i>的{​​{1}}和</i>个字符或<th>等使用java </th>方法而不替换replaceAll(<regex>,"");代码的<>个字符。

示例:

输入:<br/> 输出应为:<b>abc<br/></b>

输入:babc<br/>/b 输出应为:xy<i>abcd<br/></i>

输入:xyiabcd<br/>/i 输出应为:<th>ab<br/></th>wvx

.......等等。

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

</?([a-z]+)>应该这样做。如果斜杠在字母之后不匹配。

答案 1 :(得分:1)

您可以尝试使用String#replaceAll

String input = "<b>abc<br/></b>";
input = input.replaceAll("</?(?!br)([^>]+)>", "$1");
System.out.println(input);

babc<br/>b

模式</?(?!br)[^>]+)>将匹配br以外的任何打开或关闭HTML标记。它将仅使用标记的文本名称替换该标记。

请注意,使用正则表达式解析HTML通常不是一个好主意。如果您的示例字符串中只有单级HTML,那么这可能适用于您的情况。

Demo