我想匹配一个特定基本网址字符串后面有额外字符的网址。基地可以是' / home'或' / home / accounts / {numeric_account_id}'。我不需要捕捉任何比赛;我只想测试是否有匹配。
我做了一个正则表达式:
r'^/home(/accounts/\d+)?(/[A-Za-z0-9_\-]+)+/?$'
一些例子是:
上面有我的正则表达式,它错误地匹配3&我试过改变“'?'在帐户分组到' *'之后,但这没有帮助。似乎最后一组贪婪地匹配案例3& 4。
正确的正则表达式是什么?感谢
答案 0 :(得分:2)
试试这个正则表达式:
^/home(?:(?!/accounts/)|/accounts/\d+)(?:/[A-Za-z0-9_\-]+)+/?$
它将匹配/home
,然后是:
(?!/accounts/)
:下一个没有/accounts/
的空字符串,或
/accounts/\d+
:/accounts/
后跟数字。
之后,匹配路径中允许的任何字符。