我需要这样的东西:
test123tersre23
变成这样的东西:
{"test", "123", "tersre", "23"}
我见过很多使用组的解决方案,但我需要在这里使用 Regex.Split(因为我已经有一些其他的自定义拆分逻辑)。
有什么帮助吗?
您可以使用环视断言进行拆分:
string[] result = Regex.Split("test123tersre23", @"(?<=\d)(?=[a-zA-Z])|(?<=[a-zA-Z])(?=\d)");
这具有分裂断言所寻找的字符之间的空白(空白空间)的效果。
怎么样:
Regex.split(input, "(\d+)");
根据此示例,使用一组捕获括号,它应该输出任何一系列数字作为分隔符。这对您打算如何解析做出了一些假设,但无论如何似乎是正确的想法。
根据下面的评论,您正在寻找类似的东西
@"($|%|\d+)"
这将是您正在寻找的正则表达式:
\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;
}
编辑:
抱歉,没有看到您需要拆分方法的解决方案,我深表歉意。