正则表达式提取 HTML 标记之间的文本

新手上路,请多包涵

我正在寻找一个正则表达式,它必须在不同类型的 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> 但这一个不起作用。

原文由 Sriram 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 600
2 个回答

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

如果你想匹配小写字母添加 a-z 到字符类或使用 Pattern.CASE_INSENSITIVE (或添加 (?i) 的开头)

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

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

原文由 MikeM 发布,翻译遵循 CC BY-SA 3.0 许可协议

Matcher matcher = Pattern.compile("<([a-zA-Z]+).*>(.+)</\\1+>")
    .matcher("<a href=\"#\">HyperText</a>");

while (matcher.find())
{
    String matched = matcher.group(2);

    System.out.println(matched + " found at "
        + "\n"
        + "start at :- " + matcher.start()
        + "\n"
        + "end at :- " + matcher.end()
        + "\n");
}

原文由 Ambrish Rajput 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题