为了账号安全,请及时绑定邮箱和手机立即绑定

Python - 字符串/正则表达式匹配

Python - 字符串/正则表达式匹配

Helenr 2023-05-09 09:25:36
我正在尝试匹配如下内容以匹配传入的动态 API 路径。*这是一个精确的字符串比较,但是应该忽略和匹配对应于通配符的传入字符串位置,因为它可以是任何东西。/v1/*/test应该匹配 /v1/jnjnjnjn/test 但不应该匹配/v0/knknkk/test/test/v1/\*/test/\* 应该匹配 /v1/niniiuhi/test/njnjnj 但不应该匹配/v1/niniiuhi/test/njnjnj/knknkmkm我试过下面的。re.search('v1/.*/test', 'v1/vhvhv98988/test/test')但它同时适用于v1/njnjnj/test和v1/njnjnj/test/test。任何帮助将不胜感激?提前致谢
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

如果*应该只匹配一个组件,我们需要/从匹配中排除,或者特别包括那些允许的字符。

  • re.search(r'^/v1/[^/]*/test$', '/v1/jnjnjnjn/test')/将匹配通配符组件中除 a 以外的任何内容。

  • re.search(r'^/v1/[a-z0-9_-]*/test$', '/v1/jnjnjnjn/test')将匹配通配符组件中的小写字母、数字、下划线和破折号。

通常第二种选择更安全,但这取决于您的要求。

在这两种情况下,您都应该将搜索锚定^在开头和$结尾,除非您确实想要搜索子字符串。


查看完整回答
反对 回复 2023-05-09
  • 1 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信