我需要在文本中用逗号分隔,但是文本中也有一个逗号括号,需要忽略它。
输入文字:电泳花生,糖(糖,糖蜜),氢化植物油(棉籽和菜籽油),盐。
预期产出:
MyCode
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);
}我得到的输出:
请帮帮忙。
发布于 2021-07-13 12:41:27
您可以使用
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.,则可以删除该部分。
https://stackoverflow.com/questions/68362466
复制相似问题