复活这个古老的问题以提供另一种解决方案,因为当前的问题只检查分裂-
后没有 a ]
,这不能保证它被括在括号中。
\[[^\]]*\]|(-)
然后在第 1 组上拆分(请参阅演示右下方面板中的第 1 组捕获)
要在第 1 组上拆分,我们首先将第 1 组替换为独特的东西,例如SPLIT_HERE
,然后我们在 SPLIT_HERE 上拆分
using System;
using System.Text.RegularExpressions;
using System.Collections.Specialized;
class Program
{
static void Main() {
string s1 = @"[Wsg-Fs]-A-A-A-Cgbs-Sg7-[Wwg+s-Fs]-A-A-Afk-Cgbs-Sg7";
var myRegex = new Regex(@"\[[^\]]*\]|(-)");
var group1Caps = new StringCollection();
string replaced = myRegex.Replace(s1, delegate(Match m) {
if (m.Groups[1].Value == "") return m.Groups[0].Value;
else return "SPLIT_HERE";
});
string[] splits = Regex.Split(replaced,"SPLIT_HERE");
foreach (string split in splits) Console.WriteLine(split);
Console.WriteLine("\nPress Any Key to Exit.");
Console.ReadKey();
} // END Main
} // END Program
这是一个完整的在线演示
参考
除了情况 s1、s2、s3 之外,如何匹配模式
如何匹配模式,除非...