gpt4 book ai didi

python - 如何在我的场景中获得正则表达式匹配

转载 作者:行者123 更新时间:2023-12-01 05:08:51 24 4
gpt4 key购买 nike

我想匹配在特定基本 url 字符串后有额外字符的 url。基数可以是“/home”或“/home/accounts/{numeric_account_id}”。我不需要捕捉任何比赛;我只是想测试是否有匹配。

我制作了一个正则表达式:

r'^/home(/accounts/\d+)?(/[A-Za-z0-9_\-]+)+/?$'

一些例子是:

  1. '/home' => 不应匹配
  2. '/home/' => 不应匹配
  3. '/home/accounts/123' => 不应匹配
  4. '/home/accounts/123/' => 不应匹配
  5. '/home/x' => 应匹配
  6. '/home/accounts/123/x' => 应匹配

使用上面的正则表达式,它错误地匹配 3 和 4。我尝试更改“?”在帐户分组为“*”之后,但这没有帮助。看起来最后一组正在贪婪地匹配案例 3 和 4。

正确的正则表达式是什么?谢谢

最佳答案

尝试这个正则表达式:

^/home(?:(?!/accounts/)|/accounts/\d+)(?:/[A-Za-z0-9_\-]+)+/?$

它将匹配 /home,然后:

(?!/accounts/):接下来没有 /accounts/ 的空字符串,或

/accounts/\d+:/accounts/ 后跟数字。

之后,匹配路径中允许的任何字符。

regex101 demo

关于python - 如何在我的场景中获得正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24577768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com