python - 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/test
和v1/njnjnj/test/test
。
任何帮助将不胜感激?提前致谢
解决方案
如果*
应该只匹配单个组件,我们需要/
从匹配中排除,或者特别包括那些允许的字符。
re.search(r'^/v1/[^/]*/test$', '/v1/jnjnjnjn/test')
/
将匹配通配符组件中除 a 之外的任何内容。re.search(r'^/v1/[a-z0-9_-]*/test$', '/v1/jnjnjnjn/test')
将匹配通配符组件中的小写字母、数字、下划线和破折号。
通常第二种选择往往更安全,但它确实取决于您的要求。
在这两种情况下,除非您确实想要搜索子字符串,否则您应该^
在开头和结尾锚定您的搜索。$
作为一个通用工具,像https://regex101.com/这样的网站(有很多)可以通过解释正在发生的事情并立即显示结果来帮助开发正则表达式。
推荐阅读
- python - Pandas Groupby + Agg 上架速度非常慢
- tensorflow - Keras MaxPooling2D 中的 None 步幅是否根据过滤器大小动态设置?
- c++ - 嵌套循环边界
- .net-core - 我们可以使用 .Net 中的 FFMPEG 工具在生成的视频上添加背景音乐和帧率吗?
- python - Getting ValueError rending my Django CreateView
- c - 移动光标转义序列
- node.js - 节点 js 作为网络服务器使用过多的 if 条件来服务器静态文件
- linux - Linux内核中的`get_fs`和`sget_fc`有什么区别?(里面有一些错误信息)
- html - HTML将表格的屏幕截图保存为表格背景
- python - 将网络抓取的字符串转换为 Python 中的 if then 语句