gpt4 book ai didi

c# - 正则表达式拆分和忽略括号

转载 作者:行者123 更新时间:2023-12-04 07:23:23 25 4
gpt4 key购买 nike

我需要在文本中用逗号分隔,但文本在括号内还有一个逗号需要忽略
输入文本:精选烤花生,糖(糖、花式糖蜜) ,氢化植物油(棉籽油和菜籽油),盐。
预期输出:

  • 精选烤花生
  • 糖(糖、花式糖蜜)
  • 氢化植物油(棉籽油和菜籽油)

  • 我的代码
    string pattern = @"\s*(?:""[^""]*""|\([^)]*\)|[^, ]+)";
    string input = "Selectroasted peanuts,Sugars (sugar, fancymolasses),Hydrogenatedvegetable oil (cottonseed and rapeseed oil),Salt.";
    foreach (Match m in Regex.Matches(input, pattern))
    {
    Console.WriteLine("{0}", m.Value);
    }
    我得到的输出:
  • 精选
  • 花生
  • (糖,花式糖蜜)
  • 氢化蔬菜
  • (棉籽油和菜籽油)

  • 请帮忙。

    最佳答案

    您可以使用

    string pattern = @"(?:""[^""]*""|\([^()]*\)|[^,])+";
    string input = "Selectroasted peanuts,Sugars (sugar, fancymolasses),Hydrogenatedvegetable oil (cottonseed and rapeseed oil),Salt.";
    foreach (Match m in Regex.Matches(input.TrimEnd(new[] {'!', '?', '.', '…'}), pattern))
    {
    Console.WriteLine("{0}", m.Value);
    }
    // => Selectroasted peanuts
    // Sugars (sugar, fancymolasses)
    // Hydrogenatedvegetable oil (cottonseed and rapeseed oil)
    // Salt
    C# demo .见 regex demo , 也。它匹配一次或多次出现
  • "[^"]*" - " , 除 " 之外的零个或多个字符然后是 "
  • | - 或
  • \([^()]*\) - ( ,然后是除 ( 之外的任何零个或多个字符和 )然后是 )字符
  • | - 或
  • [^,] - 除 , 以外的字符.

  • 请注意 .TrimEnd(new[] {'!', '?', '.', '…'})代码片段中的部分旨在删除结尾的句子标点符号,但如果您可以努力 Salt.在输出中,您可以删除该部分。

    关于c# - 正则表达式拆分和忽略括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68362466/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com