4

我正在寻找一个必须在不同类型的 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>我从这里找到了这个特别的部分,但这一个不起作用。

4

3 回答 3

10

您的评论表明您忽略了转义正则表达式字符串中的反斜杠。

如果要匹配小写字母,请添加a-z到字符类或使用Pattern.CASE_INSENSITIVE(或添加(?i)到正则表达式的开头)

"<([A-Za-z][A-Za-z0-9]*)\\b[^>]*>(.*?)</\\1>"

如果标签内容可能包含换行符,则使用Pattern.DOTALL或添加(?s)到正则表达式的开头以打开 dotall/singleline 模式。

于 2013-03-28T15:21:10.683 回答
1

这应该适合您的需求:

<([a-zA-Z]+).*?>(.*?)</\\1>

第一组包含标签名称,第二组包含介于两者之间的值。

于 2013-03-28T16:13:12.597 回答
-1

一个非常具体的方式:

(<span>|<a href="#">|<div onclick="callMe\(\)">)(.*)(</span>|</a>|</div>)

但是,是的,这仅适用于这 3 个示例。您需要使用 HTML 解析器。

于 2013-03-28T15:24:14.253 回答