-1

我需要这样的东西:

test123tersre23 

变成这样的东西:

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

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

有什么帮助吗?

4

3 回答 3

3

您可以使用环视断言进行拆分:

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

这具有分裂断言所寻找的字符之间的空白(空白空间)的效果。

于 2013-03-15T19:34:15.660 回答
2

怎么样:

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

根据此示例,使用一组捕获括号,它应该输出任何一系列数字作为分隔符。这对您打算如何解析做出了一些假设,但无论如何似乎是正确的想法。


根据下面的评论,您正在寻找类似的东西

@"($|%|\d+)"
于 2013-03-15T19:34:01.820 回答
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;
}

编辑:

抱歉,没有看到您需要拆分方法的解决方案,我深表歉意。

于 2013-03-15T19:39:16.397 回答