簡體   English   中英

正則表達式提取 HTML 標記之間的文本

[英]RegEx to extract text between a HTML tag

我正在尋找一個必須在不同類型的 HTML 標記之間提取文本的正則表達式。

例如:

<span>Span 1</span> - O/p:跨度 1

<div onclick="callMe()">Span 2</div> - O/p:跨度 2

<a href="#">HyperText</a> - O/p:超文本

我從這里找到了這個特定的部分<([AZ][A-Z0-9]*)\b[^>]*>(.*?)</\1>但這一個不起作用。

您的評論表明您忽略了轉義正則表達式字符串中的反斜杠。

如果要匹配小寫字母,請將az添加到字符類或使用Pattern.CASE_INSENSITIVE (或將(?i)添加到正則表達式的開頭)

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

如果標簽內容可能包含換行符,則使用Pattern.DOTALL或在正則表達式的開頭添加(?s)以打開 dotall/singleline 模式。

這應該適合您的需求:

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

第一組包含標簽名稱,第二組包含介於兩者之間的值。

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");
}

一個非常具體的方式:

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

但是,是的,這僅適用於這 3 個示例。 您需要使用 HTML 解析器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM