如何使用正则表达式成对替换双引号为对应上下弯引号?
正则实现方案
你可以通过更简洁的正则方式实现需求,核心思路是先校验双引号总数是否为偶数,再批量替换所有成对双引号即可。
具体Java代码实现:
private static String replaceByRegex(String s) { // 统计双引号总数,非偶数直接返回原串 long quoteCount = s.chars().filter(c -> c == '"').count(); if (quoteCount % 2 != 0) { return s; } // 匹配所有成对双引号,替换为目标格式 return s.replaceAll("\"([^\"]*)\"", "„$1”"); }
如果想要一步完成校验+替换,也可以通过全局前瞻断言实现:
private static String replaceByRegexOneStep(String s) { // 前瞻断言确保双引号总数为偶数后,再匹配成对双引号替换 return s.replaceAll("(?<=^[^\"]*(?:\"[^\"]*\"[^\"]*)*)\"([^\"]*)\"", "„$1”"); }
效果验证
输入Some "text"时,两种实现都会输出Some „text”;如果双引号总数为奇数,会直接返回原字符串,完全符合需求。
内容的提问来源于stack exchange,提问作者mmichal
相关产品推荐
相关产品推荐

