首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分隔和忽略括号的Regex

分隔和忽略括号的Regex
EN

Stack Overflow用户
提问于 2021-07-13 12:31:10
回答 1查看 125关注 0票数 2

我需要在文本中用逗号分隔,但是文本中也有一个逗号括号,需要忽略它。

输入文字:电泳花生,糖(糖,糖蜜),氢化植物油(棉籽和菜籽油),盐。

预期产出:

  • 氧化硅花生
  • 糖(糖,糖蜜)
  • 氢化植物油(棉籽和菜籽油)
  • 食盐

MyCode

代码语言:javascript
复制
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); 
}

我得到的输出:

  • 氧化锡
  • 花生
  • 糖类
  • (糖、糖蜜)
  • 氢化蔬菜
  • (棉籽和菜籽油)
  • 食盐

请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-13 12:41:27

您可以使用

代码语言:javascript
复制
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#演示。也可以看看regex演示。它匹配一个或多个出现在

  • "[^"]*" - ",除"以外的零或多个字符,然后是"
  • | -或
  • \([^()]*\) -一个(,然后是除()以外的任何零或多个字符,然后是)字符。
  • | -或
  • [^,] -- ,以外的一个字符。

注意,代码片段中的.TrimEnd(new[] {'!', '?', '.', '…'})部件旨在删除尾随句标点符号,但如果可以在输出中提供Salt.,则可以删除该部分。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68362466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档