如何用单行正则表达式完成指定文本到目标格式的转换?
问题描述
原始输入文本:
abc/09dce097-34e1-4af3-ab97-9eccd1163615.json "1010101010" abc/29ef1c15-f2b3-4b4c-9a34-7de982abfb22.json "1010101010" abc/50dff7db-1bd6-48fa-b608-9e1b70a92bea.json "1010101010" abc/6092d7ee-0349-40b0-8342-4ccfe63d0297.json "1010101010" abc/64701479-62c2-4930-b85d-70c610790cc1.json "1010101010" abc/6d165c85-1499-4d36-bb4f-63d67a9503b6.json "1010101010" abc/7ab224e7-3be3-4394-8e51-7b9eb85617b8.json "1010101010" abc/8335bd20-bf16-44d0-b1f7-c898ea81749a.json "1010101010" abc/df125f62-6183-4117-a6f6-0119d2777a59.json "1010101010" abc/e91aa1b1-0bd6-4316-b03a-dd4326a82149.json "1010101010" abc/ff33010e-d20f-4c44-b560-6e5e40fbb3ad.json "1010101010"
期望输出格式:
'1010101010','1010101010','1010101010','1010101010','1010101010','1010101010','1010101010','1010101010','1010101010','1010101010','1010101010'
当前使用正则 \n?.*.json\n 替换为逗号后,结果存在开头多余逗号、引号未替换的问题,需要手动修正,希望找到能直接完成需求的单行正则表达式。
解决方案
可以采用两步正则替换实现,或者用支持多捕获组的正则工具一步完成:
方案一:两步替换
第一步匹配与替换
- 匹配正则:
^\s*.+\.json\s*|\s*"([^"]+)"\s* - 替换字符串:
(?1:'$1',)
这一步会把所有.json行删除,同时将双引号包裹的数字替换为单引号加逗号的格式。
- 匹配正则:
第二步清理末尾逗号
- 匹配正则:
,$ - 替换字符串:空
这一步删除结果末尾多余的逗号。
- 匹配正则:
方案二:一步替换(支持多捕获组的工具)
- 匹配正则:
^\s*.+\.json\s*|\s*"([^"]+)"\s*(?!$)|\s*"([^"]+)"\s*$ - 替换字符串:
该正则通过捕获组区分非末尾和末尾的数字串,分别替换为带逗号和不带逗号的格式,直接得到最终结果。(?1:'$1',)(?2:'$2')
原理说明
^\s*.+\.json\s*:精准匹配所有包含.json的行(含前后空白),替换时直接忽略这些内容。\s*"([^"]+)"\s*:捕获双引号内的数字内容,后续替换为单引号包裹的格式。- 捕获组条件判断
(?1:'$1',)确保只有捕获到数字时才生成对应格式,避免出现多余符号。
内容的提问来源于stack exchange,提问作者Adrian Bartholomew
相关产品推荐
相关产品推荐

