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

我正在尝试匹配如下内容以匹配传入的动态 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/testv1/njnjnj/test/test

任何帮助将不胜感激?提前致谢


Helenr
浏览 141回答 1
1回答

德玛西亚99

如果*应该只匹配一个组件,我们需要/从匹配中排除,或者特别包括那些允许的字符。re.search(r'^/v1/[^/]*/test$', '/v1/jnjnjnjn/test')/将匹配通配符组件中除 a 以外的任何内容。re.search(r'^/v1/[a-z0-9_-]*/test$', '/v1/jnjnjnjn/test')将匹配通配符组件中的小写字母、数字、下划线和破折号。通常第二种选择更安全,但这取决于您的要求。在这两种情况下,您都应该将搜索锚定^在开头和$结尾,除非您确实想要搜索子字符串。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python