我正在尝试匹配如下内容,以匹配传入的动态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
如果有任何帮助,我们将不胜感激?提前谢谢
如果
*
应该只匹配一个组件,那么我们需要从匹配中排除/
,或者特别包括允许的字符re.search(r'^/v1/[^/]*/test$', '/v1/jnjnjnjn/test')
将匹配通配符组件中除/
之外的任何内容李>re.search(r'^/v1/[a-z0-9_-]*/test$', '/v1/jnjnjnjn/test')
将匹配通配符组件中的小写字母、数字、下划线和破折号李>通常第二种选择更安全,但这取决于您的需求
在这两种情况下,除非您确实希望搜索子字符串,否则您应该在搜索开始时使用
^
,在搜索结束时使用$
来锚定搜索作为一个通用工具,像https://regex101.com/(有很多)这样的站点可以通过解释正在发生的事情和立即显示结果来帮助开发正则表达式
相关问题 更多 >
编程相关推荐