如何分割数字>字母或字母>数字

时间:2013-03-15 19:22:54

标签: c# regex

我需要这样的东西:

test123tersre23 

变成这样的东西:

{"test", "123", "tersre", "23"}

我见过很多使用群组的解决方案,但我需要在这里使用Regex.Split(因为我已经有了其他一些自定义拆分逻辑)。

任何帮助?

3 个答案:

答案 0 :(得分:3)

您可以使用外观断言进行拆分:

string[] result = Regex.Split("test123tersre23", @"(?<=\d)(?=[a-zA-Z])|(?<=[a-zA-Z])(?=\d)");

这会导致断言所追求的字符之间的空白(空白空间)分裂。

答案 1 :(得分:2)

怎么样:

Regex.split(input, "(\d+)");

使用一组捕获括号,它应该按照this example输出任何一系列数字作为分隔符。无论如何,这会对你打算解析的方式做出一些假设,但似乎是正确的想法。


根据以下评论,您正在寻找类似

的内容
@"($|%|\d+)"

答案 2 :(得分:0)

这将是您正在寻找的正则表达式:

  

\ d + | \ d +

然后,使用Regex.Matches方法获取结果。代码如下所示:

var input = "test123tersre23"
var pattern = @"\d+|\D+"
var results = Regex.Matches(input, pattern);

此结果包含MatchCollection。循环遍历它们以获取值:

foreach(Match m in results)
{
    var current = m.Value;
}

修改

抱歉,没有看到您需要使用Split方法的解决方案,我道歉。