我有一个正则表达式,我正在对另一个字符串进行拆分,但得到了奇怪的结果。
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/