如何编写正则表达式替换RecruiterEmails字段内的逗号为换行符
解决方案:精准替换JSON中RecruiterEmails字段值内的逗号
正则表达式(支持可变长度lookbehind的环境)
直接匹配RecruiterEmails字段值内的逗号,替换为\n:
查找正则:
(?<="RecruiterEmails":\s*"[^"]*),(?=[^"]*")
替换为:\n
正则说明
(?<="RecruiterEmails":\s*"[^"]*):反向预查,确保逗号位于RecruiterEmails字段的双引号值内部,前面是字段名、冒号、可选空格、起始引号及部分非引号内容,:目标匹配的逗号(仅RecruiterEmails值内的分隔逗号)(?=[^"]*"):正向预查,确保逗号后面是直到字段值结束引号的非引号内容,保证只替换字段值范围内的逗号
示例效果
输入JSON片段:
{ "RecruiterEmails": "alice@company.com,bob@company.com,charlie@company.com", "SourcerEmails": "dave@company.com,eve@company.com", "Department": "Engineering,Product" }
替换后:
{ "RecruiterEmails": "alice@company.com\nbob@company.com\ncharlie@company.com", "SourcerEmails": "dave@company.com,eve@company.com", "Department": "Engineering,Product" }
兼容方案(不支持可变长度lookbehind的环境)
如果所用软件不支持可变长度lookbehind,可通过捕获组结合替换逻辑实现:
查找正则:
("RecruiterEmails":\s*")(.*?)(")
替换规则(需软件支持捕获组内的字符串替换):
$1${2.replace(/,/g, '\n')}$3
注意事项
- 假设
RecruiterEmails字段值无转义双引号;若存在转义双引号,需将正则中的[^"]替换为(?:\\.|[^"])以兼容转义场景 - 确保JSON格式规范,字段名和值均使用双引号包裹
内容的提问来源于stack exchange,提问作者ElielBerra
相关产品推荐
相关产品推荐

