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

2024-09-30 08:25:24 发布

您现在位置: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

如果有任何帮助,我们将不胜感激?提前谢谢


Tags: 方法字符串test路径api内容动态字符
1条回答
网友
1楼 · 发布于 2024-09-30 08:25:24

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

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

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

在这两种情况下,除非您确实希望搜索子字符串,否则您应该在搜索开始时使用^,在搜索结束时使用$来锚定搜索

作为一个通用工具,像https://regex101.com/(有很多)这样的站点可以通过解释正在发生的事情和立即显示结果来帮助开发正则表达式

相关问题 更多 >

    热门问题