由于某种原因,正则表达式崩溃

时间:2014-09-25 12:47:01

标签: regex

我在生活中对正则表达的工作很少。所以,当我正在学习这个问题时,请带上我这个问题的新手。

我已经制作了一个正则表达式来从网址列表中获取特定的网址。

以下是列表:

http://www.xxxx.com/us/en/brothers---sisters/one/maria-lang-1-c671030p2313063.html
http://www.xxxx.com/us/en/lookbook-c471503.html
http://www.xxxx.com/us/en/pictures-c496502.html
http://www.xxxx.com/us/en/woman/shoes/high-heels-c269195.html
http://www.xxxx.com/us/en/woman/handbags-c269200.html
http://www.xxxx.com/us/en/woman/handbags/messenger-bags-c269202.html

我的正则表达式:

(us\/en\/)^(lookbook)|^(brothers---sisters)|^(pictures)[a-z0-9\-\/]*(c\d+(p\d+)?).html

我不想:仅提取前三个网址,但是当我在在线测试人员上测试时,这个正则表达式会崩溃。虽然,我已经知道当我删除第一个' ^'来自正则表达式的运算符。它至少在没有崩溃的情况下运行,但当然我没有得到相关的结果。

我一直在敲我的头很长一段时间,但无法找到关于我的概率的任何答案。请帮忙。

1 个答案:

答案 0 :(得分:1)

您错放了插入符号^,请使用:

(us\/en\/)(lookbook|brothers---sisters|pictures[a-z0-9\-\/]*c\d+(p\d+)?\.html)

根据评论进行编辑:

使用负向前看来匹配网址但前3:

(us\/en\/)(?!lookbook|brothers---sisters|pictures[a-z0-9\-\/]*c\d+(p\d+)?\.html)