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