c# - Regex.Split 表现出奇怪的行为

标签 c# regex

我有一个正则表达式,我正在对另一个字符串进行拆分,但得到了奇怪的结果。

        string subjectString = "Triage|Follow Up|QA";
        string[] splitArray = null;
        try
        {
            splitArray = System.Text.RegularExpressions.Regex.Split(subjectString, @"(?<=(^|[^\\]))\|");

            foreach (var item in splitArray)
            {
                System.Diagnostics.Debug.Print(item);
            }
        }
        catch
        {
        }

正在打印的项目是:

分流
电子
跟进

质量保证

正则表达式在 RegexBuddy 中表现正确,但在 C# 中表现不佳。关于导致奇怪行为的原因的任何想法?解释为什么 split 函数会这样运行的额外要点。

最佳答案

后视断言中的分组 (...) 导致了这种情况。尝试使用非捕获组:

@"(?<=(?:^|[^\\]))\|"

或者根本没有额外的分组:

@"(?<=^|[^\\])\|"

关于c# - Regex.Split 表现出奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2345307/

相关文章:

c# - LINQ - 帮我举个例子,我觉得 LINQ 应该可以解决!

c# - 如何捕捉链接或按钮点击?

c# - 如何在C#中修改Http Method?

c# - 如何以最有效的方式获取惰性列表的数量?

c# - 在新 TAB 中打开 URI (Silverlight)

javascript - 使用正则表达式仅解析 id

Python-查找子字符串然后替换其中的所有字符

regex - VB.NET 匹配圆括号(brackets)之间的字符串

regex - 匹配 ${.*} 的正则表达式

sql - Hive:使用正则表达式分割字符串作为单独的列