我目前正在为字符串<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
.......等等。
请帮我解决这个问题。
答案 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,那么这可能适用于您的情况。