You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用正则表达式仅替换括号内的逗号为分号

解决方案

方案1:正则表达式(需PCRE兼容引擎支持)

你可以使用以下正则匹配所有处于括号内的逗号,直接替换为分号即可满足需求:

  • 匹配正则:,(?=(?:[^()]|\((?R)\))*\))
  • 替换内容:;

原理说明

该正则通过递归正向预查逻辑,确保匹配到的逗号后方所有括号均可正确闭合,即确认该逗号必然处于某一层括号内部,支持任意深度的嵌套括号场景。

适用范围

支持PCRE语法的工具/语言均可直接使用,包括但不限于:Notepad++、PHP、Java、Python第三方regex库。


方案2:通用实现(无特殊依赖,稳定性更高)

如果你的运行环境不支持递归正则,可以用栈计数的方法直接处理字符串,逻辑更简单且兼容性更强,Python示例代码如下:

def replace_comma_in_brackets(raw_str):
    bracket_level = 0
    result = []
    for char in raw_str:
        if char == "(":
            bracket_level += 1
            result.append(char)
        elif char == ")":
            bracket_level -= 1
            result.append(char)
        elif char == "," and bracket_level > 0:
            result.append(";")
        else:
            result.append(char)
    return "".join(result)

# 测试效果
test_str = "Oats (24%) (Rolled, Bran), Coconut (13%) (Coconut , Preservative (220, 223)), Brown Sugar, Milk Solids, Golden Syrup (10%), Seeds (9%) (Sesame , Sunflower), Margarine (Vegetable Oil, Water, Salt, Emulsifiers (471, Soy Lecithin), Antioxidant (307)), Glucose, Milk Choc Compound (5%) (Sugar, Vegetable Oil, Milk Solids, Cocoa Powder, Emulsifiers (Soy Lecithin, 492), Natural Flavour), Natural Flavour"
print(replace_comma_in_brackets(test_str))

运行后输出结果与你给出的预期效果完全一致。


内容的提问来源于stack exchange,提问作者Catherine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:06:03