我试图找到一个匹配此类网址的正则表达式:
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_-]+/
现在我需要一只手来添加任何类型的条件,如:
如果在文本中出现/ K /最多1到2次,则匹配此项。
提前致谢。
最诚挚的问候。
Josema
答案 0 :(得分: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$
答案 1 :(得分: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}$