我更新了一些代碼,我沒有寫,而部分是一個正則表達式如下:我有兩個問題,其中一個是一個正則表達式
\[url(?:\s*)\]www\.(.*?)\[/url(?:\s*)\]
我明白,*?在第二個寄存器中進行非貪婪的匹配。
什麼?:\ s *在第一個和第三個寄存器中做什麼?
更新:按照要求,語言是C#.NET的3.5
我更新了一些代碼,我沒有寫,而部分是一個正則表達式如下:我有兩個問題,其中一個是一個正則表達式
\[url(?:\s*)\]www\.(.*?)\[/url(?:\s*)\]
我明白,*?在第二個寄存器中進行非貪婪的匹配。
什麼?:\ s *在第一個和第三個寄存器中做什麼?
更新:按照要求,語言是C#.NET的3.5
語法(?:)
是圍繞把一個子表達式括號沒有分別提取字符串的一部分的方式。
作者想要匹配中間的(.*?)
部分,並且不希望開頭或結尾的空格阻礙。現在,您可以使用\1
或$1
(或任何適合您的特定語言的方法)來指代域名,而不是字符串開頭的第一個空格塊
?:使括號非空,分組。在那個正則表達式中,您只會提取一條包含中間(。*?)表達式的信息$ 1。
你可能會發現這個正則表達式備忘單非常有幫助(希望)。我花了很多年試圖學習正則表達式,但沒有運氣。而且一旦我讀到這張表格 - 我立即明白了我以前沒學過的東西。
是什麼?:\ S *在第一和第三寄存器呢?
它匹配零個或多個空格字符,而不捕獲它們。
正則表達式筆者有意讓在方括號標籤結尾的空白,符合以下所有DNS標籤「WWW」。像這樣:
[url]www.foo.com[/url] # foo.com
[url ]www.foo.com[/url ] # same
[url ]www.foo.com[/url] # same
[url]www.foo.com[/url ] # same
注意,正則表達式也匹配:
[url]www.[/url] # empty string!
,並不能匹配
[url]stackoverflow.com[/url] # no match, bummer
感謝您的例子 - 非常感謝+1 – Guy 2009-08-24 04:48:24
哦,現在你有3個問題? – 2009-08-24 01:40:30
其中之一是正則表達式 – 2009-08-24 01:59:34
@Guy,\ s是一個perlish正則表達式構造。你能否更新問題標籤來顯示[perl]或[pcre](perl「兼容的」正則表達式),也許是有問題的實際編程語言?謝謝。 ? – pilcrow 2009-08-24 02:54:42