[英]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.