我正在尝试匹配如下内容以匹配传入的动态 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')
将匹配通配符组件中的小写字母、数字、下划线和破折号。
通常第二种选择更安全,但这取决于您的要求。
在这两种情况下,您都应该将搜索锚定^
在开头和$
结尾,除非您确实想要搜索子字符串。
添加回答
举报
0/150
提交
取消