我有这样的网址:
example.com/test/testurl
example.com/test/test-url
example.com/test/testurl/content
example.com/test/test-url/content我在这里做一个重定向,所以我需要一个regex来匹配url,当它只有两个段(就像前两个段一样),在一个组中获得第二个段,但是在所有其他部分中失败。
到目前为止,我完成的模式如下:
test\/(\w+)(?!\/)\b这个与第一个url匹配,在第三个url上失败,太好了。
但是它最终与第二个和第四个url相匹配,将单词捕获到破折号。我要把我的头发拔出来,任何指点都很感激。谢谢!)
发布于 2014-09-18 15:15:13
先把\b扔出去。也就是说,为了匹配单词边界,URL可以包含非单词字符。
我将假设您在没有任何其他随附文本的情况下在它自己的字符串中获得url。
在这种情况下,下列regex将:
REGEX
^[^/]+/test/[^/]+/?$雷伊
NO MATCH: example.com/test/
MATCH: example.com/test/testurl
MATCH: example.com/test/test-url
MATCH: example.com/test/test-url/
NO MATCH: example.com/test/testurl/content
NO MATCH: example.com/test/test-url/content另外,如果需要添加协议,可以重写regex:
^[^:]+://[^/]+/test/[^/]+/?$发布于 2014-09-18 15:32:39
^(?=[^\/]*\/[^\/]*\/[^\/]*$).*尝尝这个。只有当url有两个段时,这才会匹配。见演示。
http://regex101.com/r/gG5fF6/3
发布于 2014-09-18 15:09:30
请使用此正则表达式:
test/([^/]+)它将捕获在test/之后不是斜线的所有内容。
如果需要,适当地转义斜杠。
https://stackoverflow.com/questions/25916295
复制相似问题