Python正则提取contentId无匹配结果,求正确正则表达式写法
问题排查与解决方案
原正则错误说明
- 错误使用全局匹配符
^和$:这两个符号匹配的是整个文本的开头和结尾,你的需求是从长文本中提取符合规则的子串,不需要加这两个限定符。 - 量词使用语法错误:
[字符集]*{36}属于重复定义量词,语法不合法,同时你定义的字符集包含了大量无关特殊符号(比如~、@、#等),不符合contentId的字符规则。 - 缺少上下文匹配:你要提取的contentId固定出现在
contentId: '之后、单引号之前,没有匹配这部分前缀和边界,自然无法命中目标内容。
正确实现代码
import re # 读取文件内容 with open('你的目标文件路径', 'r', encoding='utf-8') as f: content = f.read() # 匹配规则严格对应contentId格式:8位字符+横杠+4位+横杠+4位+横杠+4位+横杠+12位 pattern = r"contentId: '([a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12})'" r1 = re.findall(pattern, content) print(r1)
运行结果
['2301ae56-3b9c-4653-963b-2ad84d06ba08', 'a887526b-ff19-4409-91ff-e1679e418922']
内容的提问来源于stack exchange,提问作者Skyler Martin
相关产品推荐
相关产品推荐

