Python使用正则匹配双引号字符串提取title字段对应值的问题
问题原因
你写的正则开头强制要求匹配\n或者\r换行符,如果待匹配的字符串开头没有提前换行,整段正则从第一步就匹配失败,自然返回空列表。
解决方案
方案1:修正正则表达式(仅适用于一定要用正则的场景)
去掉开头的换行符匹配要求,同时优化捕获组规则,只匹配双引号包裹的title值:
import re pattern = re.compile(r'"title":\s*"([^"]+)"') test_str = '[{"title": "Inventory Accountant", "location": "Bern, KS", "snippet": "JOB PURPOSE' result = pattern.findall(test_str) # 输出结果为 ['Inventory Accountant']
如果需要兼容title值可能不带双引号的场景,也可以用下面的版本,匹配到逗号或者换行就停止:
pattern = re.compile(r'"title":\s*([^\n\r,}]+)')
方案2:使用JSON解析(更推荐,稳定性更高)
你提供的待提取内容本身就是JSON数组结构,用Python内置的json模块解析容错性更高,不会因为字符串格式细微变化就匹配失败:
import json # 注意如果你的字符串是不完整的JSON,需要先补全闭合符号,这里你给出的例子缺了后面的"]}",补全后再解析 test_str = '[{"title": "Inventory Accountant", "location": "Bern, KS", "snippet": "JOB PURPOSE"}]' data = json.loads(test_str) job_title = data[0]["title"] # 输出结果为 Inventory Accountant
内容的提问来源于stack exchange,提问作者Jordan Lowry
相关产品推荐
相关产品推荐

