任何人都可以帮助正确的正则表达式模式吗? 基本上我想捕获所有只有一个子文件夹的字符串,之后没有别的东西(除了正斜杠)。
这是我的正则表达式,但它与所有内容都不匹配:
Regex Pattern: http(s)?:\/\/(.*).(.*)/(\w-)*\b
匹配的字符串(我想要匹配的是箭头):
http://test.org/
==> http://test.org/SubFolder1
http://test.org/SubFolder1?Query=Test
http://test.org/SubFolder1/SubFolder2
http://test.org/SubFolder1/SubFolder2?Query=Test
http://www.test.org/
==> http://www.test.org/SubFolder1
http://www.test.org/SubFolder1?Query=Test
http://www.org/SubFolder1/SubFolder2
http://www.org/SubFolder1/SubFolder2?Query=Test
www.test.org/
==> www.test.org/SubFolder1
www.test.org/SubFolder1?Query=Test
www.org/SubFolder1/SubFolder2
www.org/SubFolder1/SubFolder2?Query=Test
提前致谢。
答案 0 :(得分:1)
使用regexr我能够解决问题。很多时候,您无法使用google确切的解决方案,因此您应该花一些时间来了解如何根据自己的独特需求编写正则表达式。
(https?:\/\/)?\w+\.+[\w\.]*\/[\w-]+$
我创建了一个regexr here,它以非常图形的方式解释了解决方案。
答案 1 :(得分:1)
而不是正则表达式,只需使用内置的Uri和UriBuilder类:
首先创建一个方法来确定输入字符串是否匹配:
public static bool IsMatch(string url)
{
Uri uri = new UriBuilder(url).Uri;
return uri.Segments.Length == 2 && string.IsNullOrWhiteSpace(uri.Query);
}
然后你可以使用LINQ过滤你的列表:
var matchedUrls = urls.Where(IsMatch);
小提琴here