我有一個簡單的HTML字符串。從該字符串中,我想提取兩個HTML標籤之間的內容。提取兩個標籤之間的內容
我的源字符串是這樣的:
"Hello <b>world</b> test"
我想解壓: 「世界」
我該怎麼辦呢?
我有一個簡單的HTML字符串。從該字符串中,我想提取兩個HTML標籤之間的內容。提取兩個標籤之間的內容
我的源字符串是這樣的:
"Hello <b>world</b> test"
我想解壓: 「世界」
我該怎麼辦呢?
儘管在極其簡單的情況下這可能是可能的,但我強烈建議不要這樣做。 Regexp功能不足以解析HTML。使用適當的HTML解析庫。
我不知道你使用的是什麼語言,這是一個VB.NET例子:「(。*)你好測試」
模式將
和Regex.Matches功能將採取您的輸入和模式,並返回一組匹配。每個比賽將包含組,組0將是整個比賽:「你好世界測試」和組1將是組內的文本:「世界」
System.Text.RegularExpressions.Regex.Matches(「hello world (0).Groups(1)
而像Dervall說Regex可能沒有足夠強大的功能來執行你想要做的事情,而且你可能需要重新修改與HTML一起工作的模式,如使空白(空格,製表符和新行)可選爲1例子。
檢查編輯 - 標籤已經因爲格式不正確。 – 2012-02-06 20:38:27
假設你不是說任何標籤,但是具體的標籤(在這種情況下<b>
),並假設你的HTML結構完好,因此不包含嵌套<b>
標籤:
(?s)<b[^>]*>((?:(?!</b>).)*)</b>
結果將是在組號1
說明:
(?s) # Allow the dot to match newlines (hope you're not using JavaScript)
<b[^>]*> # Match opening <b> tag
( # Capture the following:
(?: # Match (and don't capture)...
(?! # (as long as we're not at the start of
</b> # the string </b>
) # )
. # any character.
)* # Repeat any number of times
) # End of capturing group.
</b> # Match closing </b> tag
我會使用下面的表達式來驗證結束標記是否與開始標記匹配。
(?<=<(b)>)[^>]+(?=</\1>)
更多的 「消化」 的例子是:
(?<=<(b)>)[^>]+(?=</b>)
在什麼語言? – Kyle 2012-02-06 20:14:02
我們需要知道你使用這個正則表達式的語言。正則表達式用於識別文本。此外,你的例子與你的實際問題沒有任何關係。看到這個問題關於HTML提取http://stackoverflow.com/a/1732454/1178921 – deltree 2012-02-06 20:17:45
在這裏的權威答案:http://stackoverflow.com/a/1732454/85371 – sehe 2012-02-06 20:21:54