c# - 如何将部分 url 与 c# 匹配
问题描述
我有一个动态列表,如下行
https://www.example.com/ */post/
https://www.example2.com/videos/ *
https://www.example3.com/photo/
我如何匹配 C# 以下网址(返回 true)
https://www.example.com/user123/post/
http://www.example.com/user123/post/abc
https://www.example2.com/videos/1234
https://www.example2.com/videos/1234/5678
http://www.example2.com/videos/1234/5678
http://example2.com/videos/1234/video.asp?id=1
也许我可以使用 UriTemplate 但网址有很多部分。他们没有静态格式。
解决方案
试试这个方法,它使用正则表达式:
static void Main(string[] args)
{
var urls = new string[] { "https://www.example.com/*/post/", "https://www.example2.com/videos/*" };
// here regex patterns are created: special characters are escaped and
// star, which means here "anything" is replaced by .+ which means "one or more of any charaters"
var regexes = urls.Select(url => new Regex(url.Replace("/", @"\/").Replace(".", @"\.").Replace("*", ".+")));
var toCheck = new string[]
{
"https://www.example.com/user123/post/",
"http://www.example.com/user123/post/abc",
"https://www.example2.com/videos/1234",
"https://www.example2.com/videos/1234/5678",
"http://www.example2.com/videos/1234/5678",
"http://example2.com/videos/1234/video.asp?id=1"
};
var valid = toCheck.Where(url => regexes.Where(r => r.Match(url).Success).Any()).ToArray();
}
推荐阅读
- angular - 尝试通过 Angular 的 HttpClient 返回的 RxJS 数据进行过滤,该 HttpClient 从数据库表返回数据
- javascript - 无法在 ajax + Rails 中获取评论
- linux - 程序不适用于 crontab(路径问题)
- javascript - 在普通 JavaScript 中从 Node.js 导入类
- asp.net - 替换引导代码后导航栏未固定在顶部
- ruby - 如何大写 attr_accessor
- amazon-web-services - AWS codeBuild:多个输入源到一个输出工件
- python - 查找表类 Python
- excel - 将数据验证列表重置为第一项,方法范围失败
- android - Nexus7 无法加载原生库