首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# Regex按逗号或空格拆分,但在单引号或双引号中忽略

C# Regex按逗号或空格拆分,但在单引号或双引号中忽略
EN

Stack Overflow用户
提问于 2022-11-10 01:14:57
回答 1查看 36关注 0票数 -1

你好世界“波士顿红袜队”,“辣椒比萨”,“奶酪比萨”,啤酒

输出应该是

你好,世界波士顿红袜辣椒酱比萨饼比萨啤酒

这就是我所拥有的

代码语言:javascript
复制
class Program
{
    static void Main(string[] args)
    {
        string input = System.IO.File.ReadAllText(@"input.txt");
        string censoredfile = System.IO.File.ReadAllText(@"censored.txt");
        var outputFile = "output.txt";
        var results = Regex.Split(censoredfile, "(?:^|,|[ ])(\"(?:[^\"]+|\"\")*\"|[^,]*)");
        

        foreach (var result in results)
        {
            Console.WriteLine(result);
            
        }
        
    }
}

这是我的输出

你好世界“波士顿红袜队” “辣香肠比萨” “奶酪比萨” 啤酒 区块报价

EN

回答 1

Stack Overflow用户

发布于 2022-11-10 09:16:58

您可以使用

代码语言:javascript
复制
var text = "Hello world \"Boston Red Sox\", 'Pepperoni Pizza', 'Cheese Pizza', beer";
var pattern = @"""(?<r>[^""]*)""|'(?<r>[^']*)'|(?<r>[^\s,]+)";
var tokens = Regex.Matches(text, pattern).Cast<Match>().Select(x => x.Groups["r"].Value).ToList();
Console.WriteLine(string.Join("\n", tokens));

C#演示。输出:

代码语言:javascript
复制
Hello
world
Boston Red Sox
Pepperoni Pizza
Cheese Pizza
beer

也可以看看regex演示。详细信息

  • "(?<r>[^"]*)" - ",然后捕获到组"r“中的除"之外的零个或多个字符,然后是"字符。
  • | -或
  • '(?<r>[^']*)' - ',然后捕获到组"r“中的除'之外的零个或多个字符,然后是'字符。
  • | -或
  • (?<r>[^\s,]+) -组"r":除空格和逗号外的一个或多个字符。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74383123

复制
相关文章

相似问题

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