2009-02-18 68 views
1

這個問題顯示了我對正則表達式的無知。我從來沒有足夠的理解它。返回一部分正則表達式匹配

如果我想匹配,例如,HTML中標籤的URL部分,我需要做什麼?

我的正則表達式來獲取整個標籤:

<A[^>]*?HREF\s*=\s*[""']?([^'"" >]+?)[ '""]?> 

我不知道我需要做的就是URL出這一點,我不知道在哪裏看的正則表達式文檔弄清楚這一點。

回答

3

如果使用Perl進行編程,您可以在if()語句中使用$ 1操作符。例如。

if($HREF =~ /<A[^>]*?HREF\s*=\s*[""']?([^'"" >]+?)[ '""]?>/) { 
print $1; 
} 
+0

謝謝,這給了我足夠的洞察力,以解決我的問題。分組是我需要的:-) – 2009-02-18 02:25:29

+0

很高興我能幫忙^^ – Suroot 2009-02-18 02:26:22

2

的究竟是如何部分取決於你使用的正則表達式庫,但方法是使用一個分組表達式。在你的例子中,你實際上已經有了一個,因爲分組表達式是加上括號的。 href屬性值是您的第一個組(您的第零組是整個表達式)。

1

您可以使用圓括號將正則表達式匹配的部分分組。在這種情況下,您可以在URL部分周圍使用圓括號,然後使用數字來引用該組。請參閱here以瞭解您可以如何做到這一點。

0

我切換了一點東西 - 嘗試這樣的事:

<a[^>]*href="([^"]*).*> 
相關問題