可能重复:
正则表达式以删除HTML标记
是否有一个表达式可以获取两个HTML标记之间的值?
鉴于这种:
<td class="played">0</td>
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个表达式,它将返回0,剥离<td>标签.
Rod*_*eas 139
您不应尝试使用正则表达式解析HTML.HTML不是常规语言,因此您提出的任何正则表达式都可能在某些深奥的边缘情况下失败.有关详细信息,请参阅此问题的开创性答案.虽然大多数格式化为一个笑话,但它是一个非常好的观点.
以下示例是Java,但正则表达式与其他语言类似(如果不相同).
String target = someString.replaceAll("<[^>]*>", "");
Run Code Online (Sandbox Code Playgroud)
假设你的非html不包含任何<或>,并且输入字符串的结构正确.
如果您知道它们是特定标记 - 例如,您知道文本只包含<td>标记,则可以执行以下操作:
String target = someString.replaceAll("(?i)<td[^>]*>", "");
Run Code Online (Sandbox Code Playgroud)
编辑:Ωmega在另一篇帖子的评论中提出了一个很好的观点,即如果有多个标签,这会导致多个结果被挤压在一起.
例如,如果输入字符串是<td>Something</td><td>Another Thing</td>,那么上面的结果将导致SomethingAnother Thing.
在需要多个标签的情况下,我们可以执行以下操作:
String target = someString.replaceAll("(?i)<td[^>]*>", " ").replaceAll("\\s+", " ").trim();
Run Code Online (Sandbox Code Playgroud)
这将HTML替换为单个空格,然后折叠空白,然后修剪任何结尾.
Joe*_*oey 52
一个微不足道的方法是取代
<[^>]*>
Run Code Online (Sandbox Code Playgroud)
没有.但取决于你的输入结构不合理,可能会失败.
您可以使用jsoup http://jsoup.org/
Whitelist whitelist = Whitelist.none();
String cleanStr = Jsoup.clean(yourText, whitelist);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
237908 次 |
| 最近记录: |