正则表达式到Split String

时间:2012-03-05 14:32:48

标签: c# regex

我正在尝试编写正则表达式来拆分以下字符串

"17. Entertainment costs,16. Employee morale, health, and welfare costs,3. Test"

17. Entertainment costs
16. Employee morale, health, and welfare costs
3. Test

请注意第二个字符串中的逗号。

我正在尝试

static void Main(string[] args) {
        Regex regex = new Regex( ",[1-9]" );
        string strSplit = "1.One,2.Test,one,two,three,3.Did it work?";
        string[] aCategories = regex.Split( strSplit );
        foreach (string strCat in aCategories) {
            System.Console.WriteLine( strCat );
        }
    }

但#不会通过

1.One
.Test,one,two,three
.Did it work?

2 个答案:

答案 0 :(得分:3)

您可以使用a lookahead (?=...),就像在此表达式中一样:

@",(?=\s*\d+\.)"

如果您不想在\s*,之间留出空格,请移除N.

答案 1 :(得分:1)

那是因为你正在分裂(例如),2 - 2被认为是分隔符的一部分,就像逗号一样。要解决此问题,您可以使用lookahead assertion

        Regex regex = new Regex( ",(?=[1-9])" );

表示“逗号,只要逗号后面紧跟非零数字”。