2013-02-22 99 views

回答

8

您可以使用此以下正則表達式:

>([^<]*)< 

,或者> [^ <] * <

然後消除不必要的字符,如 '<' & '>'

+1

你能解釋的'[^ <]'的含義是什麼? – 2015-07-09 13:47:12

+0

這不適用於' Alice' - 即嵌套標籤內的文本。有什麼想法嗎? – PeterX 2016-02-12 02:02:42

3

在你的情況的鏈接,你可以只用第二個反向引用的正則表達式,它會抱着你感興趣的文本。

既然你提到你的標籤preg_match,我假設你想要這個PHP。

$matches = array(); 
$pattern = '#<title>(.*?)</title>#'; // note I changed the pattern a bit 
preg_match($pattern, $string, $matches); 
$title = $matches[1]; 

注意,這實際上是我的模式先回參考,因爲我省略了周圍的標籤本身,這是沒有必要的括號。

通常情況下,您不應該使用正則表達式來解析HTML文檔,但我認爲這可能是其中一種異常情況,因爲標題標籤應該只在頁面上存在一次。

5

的最佳方式是使用斷言,您的情況下,正則表達式應爲:

(?<=\<title\>).*?(?=\<\/title\>) 

更多細節看看here

+0

如果換行符出現在內容中,這不起作用! – ZOXEXIVO 2014-10-13 20:05:21

2

我用這個作爲正則表達式的替換功能:(?< +>)

+0

SMART答案!我喜歡你看待事物的方式 – 2016-09-14 23:56:25

相關問題