python - 如何在 Python 正则表达式中匹配特定的 URL 模式
问题描述
我无法匹配这种格式的模式:p#.g.com
其中 # 不是 1 或 2。例如,如果模式是p1.g.com
,我不需要匹配。如果是的话p2.g.com
,我不需要匹配。
但如果它是任何其他数字,例如p3.g.com
or p29.g.com
,那么我需要匹配。
我当前的模式是r"(?P<url>p([^1,2])\.g\.com)"
,但如果模式是 p##.g.com 则失败,基本上是任何两位数都失败。# 没有上限,因此它可以是 3 或 999 或介于两者之间的任何值。
我也尝试过r"(?P<url>p([^1,2])\d+\.g\.com)"
,但它不匹配任何以 1 或 2 开头的数字。例如 11 或 23 不匹配,我确实想要匹配。
解决方案
试试这个正则表达式:
p(?:[03-9]|\d{2,})\.g\.com
解释:
- 匹配字符
p
- 非捕获组的开始
- 匹配以下之一:
- 数字 0 或 3-9
- 任何两位数,例如 10 或更高
- 匹配以下之一:
- 匹配字符
.g.com
推荐阅读
- javascript - ES6 Javascript 的导出文件范围变量
- ios - 无效更新:第 0 节中的项目数无效。数据源首先更新
- javascript - 导入 Chakra UI 时出现此错误
- r - 根据 2 个变量选择案例
- node.js - 猫鼬找到多个文件然后添加对象数组
- python - 如何修复 discord.py 中缺少所需的参数?
- python - BS4 Python得到一个href url
- javascript - 为“\n”拆分字符串而不影响javascript中字符串中的“\\n”
- reactjs - 在表格内反应 antd 设计选择
- laravel - Laravel 7 不显示真棒字体图标