C# 需要双正则表达式吗?

C# 需要双正则表达式吗?,c#,regex,C#,Regex,我正在尝试使用正则表达式解析URL URL的格式可以如下所示 雅得ayadahttp://www.theurl.com/apage 雅得ayadahttp://www.theurl.com/ 雅得ayadahttp://www.theurl.com 雅得ayadahttp://meow.theurl.com/apage 雅得ayadahttp://theurl.com 雅得ayadahttp://theurl.com/ 这是我的两个正则表达式,用于处理有www和无www(或任何其他subdoam

我正在尝试使用正则表达式解析URL

URL的格式可以如下所示

雅得ayadahttp://www.theurl.com/apage
雅得ayadahttp://www.theurl.com/
雅得ayadahttp://www.theurl.com
雅得ayadahttp://meow.theurl.com/apage
雅得ayadahttp://theurl.com
雅得ayadahttp://theurl.com/

这是我的两个正则表达式,用于处理有www和无www(或任何其他subdoamin)的情况

www.regex:

    \bhttp:\/\/\b\w*[a-z0-9]\.\w*[a-z0-9]\.\w*[a-z0-9]
    \bhttp:\/\/\b\w*[a-z0-9]\.\w*[a-z0-9]
和非www regex:

    \bhttp:\/\/\b\w*[a-z0-9]\.\w*[a-z0-9]\.\w*[a-z0-9]
    \bhttp:\/\/\b\w*[a-z0-9]\.\w*[a-z0-9]
有没有办法把它们结合起来?我知道有,但我似乎做不到。我已经试了几个小时了


此外,它们似乎返回空的匹配项,这给了我的列表不必要的项。是否可以返回不为空的匹配项?

以下操作可能会执行此操作:

\bhttp:\/\/([\w\d\-\.]+\.)?[\w\d\-\.]+\.[\w\d]+\/?

这可能对你有用

\bhttp:\/\/(\b\w*[a-z0-9]\.)?\w*[a-z0-9]\.\w*[a-z0-9]

原始匹配模式:\bhttp:\/\/(\b\w*[a-z0-9]\)?\w*[a-z0-9]\.\w*[a-z0-9]在找到的匹配项中:没有匹配项。@Carlpalson::源文本是什么?yad上面的字符串是什么ayadahttp://www.theurl.com/apage 雅得ayadahttp://www.theurl.com/ 雅得ayadahttp://www.theurl.com 雅得ayadahttp://meow.theurl.com/apage 雅得ayadahttp://theurl.com 雅得ayadahttp://theurl.com/@Carlpalson::那么您可以像这样尝试
\b(\w*[a-z0-9])?http:\/\/(\b\w*[a-z0-9]\)?\w*[a-z0-9]\.\w*[a-z0-9]