如何使用Python正则表达式匹配URL中指定单词后跟随的数字
问题原因分析
- 你当前使用的
\word1(.*)[0-9]\/正则存在三处明显错误:- 开头
\word1写法错误:\w是正则元字符,代表字母、数字、下划线,你要匹配字面量字符串word1不需要加前置反斜杠,直接写word1即可 - 中间的
.*属于贪婪匹配规则,会尽可能多的向后匹配字符,直接吞掉中间的数字段,无法完成精准捕获 - 末尾的
[0-9]\/仅匹配单个数字加斜杠的组合,不能捕获完整的长数字串
- 开头
正确正则方案
使用带捕获组的正则即可完成需求,完整正则为:word1\/(\d+)\/word2\/(\d+)\/
其中:
\/匹配路径分隔符斜杠\d+匹配1个及以上的数字串- 两个括号
()为捕获组,第一个捕获组对应word1后的数字,第二个捕获组对应word2后的数字
代码示例(Python)
import re target_url = "https://www.pizza.com/word1/685185197419/word2/980054970331342/" result = re.search(r"word1/(\d+)/word2/(\d+)/", target_url) if result: w1 = result.group(1) w2 = result.group(2) print(f"w1 = {w1}") print(f"w2 = {w2}")
运行后输出完全符合预期:
w1 = 685185197419 w2 = 980054970331342
如果只需要单独匹配其中某一个数字,可分别使用对应正则:
- 匹配
word1后的数字:word1\/(\d+)\/,取第1个捕获组内容即可 - 匹配
word2后的数字:word2\/(\d+)\/,取第1个捕获组内容即可
内容的提问来源于stack exchange,提问作者The Dan
相关产品推荐
相关产品推荐

