我正在寻找一个正则表达式,它必须在不同类型的HTML标记之间提取文本。
例如:
<span>Span 1</span>
- O / p:跨度1
<div onclick="callMe()">Span 2</div>
- O / p:跨度2
<a href="#">HyperText</a>
- O / p:超文本
我从here找到了这个特殊的作品<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1>
但是这个作品没有用。
答案 0 :(得分:7)
您的评论显示您忽略了逃避正则表达式字符串中的反斜杠。
如果您想匹配小写字母,请将a-z
添加到字符类中,或使用Pattern.CASE_INSENSITIVE
(或将(?i)
添加到正则表达式的开头)
"<([A-Za-z][A-Za-z0-9]*)\\b[^>]*>(.*?)</\\1>"
如果代码内容可能包含换行符,请使用Pattern.DOTALL
或将(?s)
添加到正则表达式的开头以启用dotall / singleline模式。
答案 1 :(得分:1)
这应该符合您的需求:
<([a-zA-Z]+).*?>(.*?)</\\1>
第一组包含标签名称,第二组包含中间值。
答案 2 :(得分:-1)
一种非常具体的方式:
(<span>|<a href="#">|<div onclick="callMe\(\)">)(.*)(</span>|</a>|</div>)
但是,这只适用于这三个例子。您需要使用HTML解析器。