我需要这样的东西:
test123tersre23
变成这样的东西:
{"test", "123", "tersre", "23"}
我见过很多使用群组的解决方案,但我需要在这里使用Regex.Split(因为我已经有了其他一些自定义拆分逻辑)。
任何帮助?
答案 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方法的解决方案,我道歉。