2020-09-29 21:47:45
使用正则表达式从“姓名 • • • • • 姓氏”格式的结构化文本中提取姓名信息,可通过以下正则模式实现:/(w+)s+•s+•s+•s+•s+•s+(w+)/g,结合JavaScript代码可高效完成提取任务。
核心正则表达式解析输出结果:
[ { name: 'Tom', surname: 'Hanks' }, { name: 'Morgan', surname: 'Freeman' }, { name: 'Robert', surname: 'Redford' }]关键注意事项多词姓氏处理:
若姓氏包含空格(如“De La Cruz”),需调整正则表达式为/([ws]+)s+•s+•s+•s+•s+•s+([ws]+)/g,但可能捕获多余内容。
更精确的方法:使用负向先行断言(如/(?!S)w+(?:s+w+)*(?!S)/)或限定字符集。
分隔符灵活性:
若分隔符数量不固定(如3~5个“•”),可改为/(w+)s+(•s+){3,5}(w+)/g,其中{3,5}表示匹配3到5次。
若分隔符为其他符号(如“---”),直接替换正则中的“•”即可。
性能优化:
对超大文本文件,建议分块处理或使用专业解析库(如Python的pandas)。
避免在循环中重复编译正则表达式。
跨语言兼容性:
正则语法在Python、Java、C#等语言中通用,但API调用方式不同(如Python使用re.findall())。
通过掌握正则表达式的捕获组、字面量匹配和全局标志,可高效解决类似结构化文本提取问题。实际应用中需根据数据特点调整模式,并注意性能与准确性的平衡。