我只需找出那些以http://www.example.com/blog/
开头的网址,而字符/
的总数恰好是5
。
所以它不会匹配像
这样的网址http://www.example.com/blog/category/cat-1/
http://www.example.com/blog/category/cat-2/
http://www.example.com/blog/tags/a-b-c/
它应该只匹配
之类的网址http://www.example.com/blog/a-blog-title/
http://www.example.com/blog/another-blog-title/
http://www.example.com/blog/just-one-more-blog-title/
我在regxr上尝试了很多但是无法创建一个。
我将在C#中实现它(如果它有任何不同)。
提前致谢。
答案 0 :(得分:2)
你想要这样的东西:
bool isMatch = Regex.IsMatch(str, "^http://www.example.com/blog/[^/]*/[^/]*$");
(以您的网址开头,有0-n个字符,后跟一个/,后跟0-n个字符,字符串的结尾)
答案 1 :(得分:1)
这应该可以解决问题:
Regex reg = new Regex(@"^http://www.example.com/blog/[^/]*/[^/]*/$");
答案 2 :(得分:1)
对于这类任务,我改为使用Uri
类,例如(使用文本文件测试):
Uri uri = null;
var uris = File.ReadLines(filePath)
.Where(l => Uri.TryCreate(l.Trim(), UriKind.Absolute, out uri))
.Select(l => uri);
var validUris = uris
.Where(u => u.Host == "www.example.com"
&& u.Segments.Length == 3
&& u.Segments[1] == "blog/");
答案 3 :(得分:1)
您可以尝试类似
的内容^http://(?=www.example.com/blog/)([^/]*/){3}$
匹配任何以www.example.com/blog/
开头的网址(在http://
位之后)并且总共有5个,http://
中有两个,后来有3个。
不太熟悉C#,所以我不知道如何最好地应用表达式。