0

我试图找到一个匹配这种 URL 的正则表达式:

http://sub.domain.com/selector/F/13/K/100546/sampletext/654654/K/sampletext_sampletext.html

并且不匹配这个:

http://sub.domain.com/selector/F/13/K/10546/sampletext/5987/K/sample/K/101/sample_text.html

仅当 /K/ 的数量最小为 1 且最大为 2 时(带有像 {1,2} 这样的量词的东西)

直到此刻我有以下正则表达式:

http://sub\.domain\.com/selector/F/[0-9]{1,2}/[a-z0-9_-]+/

现在我需要一只手来添加任何类型的条件,例如:

如果在文本中最多出现 1 到 2 次 /K/,则匹配此选项。

提前致谢。

最好的祝福。

何塞马

4

2 回答 2

1

你需要这一切在一条线上吗?

我会采取的方法是做一个正则表达式/K/,然后计算我得到的匹配数。

我认为 Boost 是一个 C++ 库,对吧?在 C# 中,我会这样做:

string url = "http://sub.domain.com/selector/F/13/K/100546/sampletext/654654/K/sampletext_sampletext.html";
if (Regex.Matches(url, "/K/").Count <= 2)
{
    // good url found
}

更新

此正则表达式将匹配前两个 K 的所有内容,然后只允许 url filename.html 之后:

^http://sub.domain.com/selector/F/[\d]+/[a-zA-Z]+/[\d]+/[a-zA-Z]+/[\d]+/K/[a-zA-Z_]+\.html$
于 2010-05-05T11:24:06.747 回答
1

此 RE 将匹配 /F/[0-9]{1,2} 之后具有 1 或 2 个 /K/ 的任何内容,它也可以匹配http://sub.domain.com/selector/F/13/K /100546/stuff/21515/stuff/sampletext/654654/K/stuff/sampletext_sampletext.html

^http://sub\.domain\.com/selector/F/[0-9]{1,2}(?:/K(?=/)(?:(?!/K/)/[a-z0-9_.-]+)*){1,2}$
于 2010-05-05T11:34:44.853 回答