您好我的网址如下:
我需要解析上面的URL以获得两个组作为后续行为:
Group1 Group 2
vimeo.com/ 99612902
www.vimeo.com/ 99612902
http://vimeo.com/ 99612902
http://www.vimeo.com/ 99612902
http://vimeo.com/ 81368903
我尝试了以下正则表达式
^((http[s]?|ftp):\/)?\/?([^:\/\s]+)(:([^\/]*))?((\/[\w\-]+)*\/)([\w\-\.]+[^#?\s]+)(\?([^#]*))?(#(.*))?
但是这会产生不必要的空组。请帮帮我。
答案 0 :(得分:1)
根据您的输入,我们可以将这两个部分匹配到第1组和第2组:
^(.*/)(.*)
或者,对于您的修订输入:
^(.*[/=])([^/=]+$)
在the demo中,请参阅右侧窗格中的捕获组。
在VB.NET中,你可以这样做:
Dim theUrl As String
Dim theNumbers As String
Try
ResultString = Regex.Match(SubjectString, "^(.*/)(.*)", RegexOptions.Multiline)
theUrl = ResultString.Groups(1).Value
theNumbers = ResultString.Groups(2).Value
Catch ex As ArgumentException
'Syntax error in the regular expression
End Try
选项2
如果您想同时进行一些非常轻量级的网址验证,可以使用:
^((?:http://)?(?:www\.)?[^./]+\.\w+/)(.*)
或者,修改后的输入:
^((?:http://)?(?:www\.)?[^./]+\.\w+[=/])([^/=]+$)
答案 1 :(得分:0)
只需使用以下正则表达式
即可^(.*\/)(.*)$
从开始到最后一个/
符号由group1捕获。剩余的字符被捕获到group2中。
或强>
^((?:https?:\/\/)?(?:www\.)?(?:[^.]*)\.\w+\/)(.*)$
答案 2 :(得分:0)