2012-03-03 109 views
0

我要提取所有有此caracters之间:正则表达式来提取URL

<a href="/url?q=(text to extract whatever it is)&amp 

我尝试这种模式,但它不是为我工作:

/(?<=url\?q=).*?(?=&amp)/ 

我在编程Vb.net,这是代码,但我认为问题是这种模式是错误的:

Dim matches As MatchCollection 

    matches = regex.Matches(TextBox1.Text) 

    For Each Match As Match In matches 

     listbox1.items.add(Match.Value) 

    Next 

你能帮我吗?

+0

我在http://rubular.com/测试您的正则表达式和它的确定。 – dotoree 2012-03-03 17:35:46

回答

2

你的正则表达式是似乎除了在开头的斜线(/)和表达的正确结束,将其删除:

Dim regex = New Regex("(?<=url\?q=).*?(?=&amp)") 

,它应该工作。

某些实用程序和大多数语言使用/(正斜杠)开始和结束(取消限制或包含)其他人可能使用单引号的搜索表达式。用System.Text.RegularExpressions.Regex你不需要它。下面

+0

我爱你! XD我用斜线,因为我读到它需要开始和结束的模式...但也许我错了... – user1246770 2012-03-03 17:45:39

+1

@ user1246770:如果您发现此答案有帮助,然后[请务必接受它]( http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 – ruakh 2012-03-03 18:11:08

0

此正则表达式的代码将提取您的文字(或任何其他)的所有URL:

(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?