正则表达式分割字符串和数字

Rob*_*vey 17 c# regex split

我有一个形式的字符串:

codename123
Run Code Online (Sandbox Code Playgroud)

是否有正则表达式可用于Regex.Split()将字母部分和数字部分拆分为双元素字符串数组?

Jos*_*osh 45

我知道您要求使用该Split方法,但作为替代方法,您可以使用命名捕获组:

var numAlpha = new Regex("(?<Alpha>[a-zA-Z]*)(?<Numeric>[0-9]*)");
var match = numAlpha.Match("codename123");

var alpha = match.Groups["Alpha"].Value;
var num = match.Groups["Numeric"].Value;
Run Code Online (Sandbox Code Playgroud)

  • 回答了我自己的问题:var numAlpha = new Regex("(?<Numeric> [0-9]*/*[0-9]*)(?<Alpha> [a-zA-Z]*)"); (2认同)
  • @FllnAngl - 这个表达式是顺序相关的。`Alpha` 出现在 `Numeric` 之前 (2认同)

Tim*_*ker 8

splitArray = Regex.Split("codename123", @"(?<=\p{L})(?=\p{N})");
Run Code Online (Sandbox Code Playgroud)

将在Unicode字母和Unicode数字之间分割.


Bob*_*Bob 6

如果你的字符串总是那种形式,那么正则表达式对此有点沉重.你可以用

"codename123".IndexOfAny(new char[] {'1','2','3','4','5','6','7','8','9','0'})
Run Code Online (Sandbox Code Playgroud)

以及对Substring的两次调用.


Ani*_*Ani 5

IMO,找到匹配项会容易得多,例如:

Regex.Matches("codename123", @"[a-zA-Z]+|\d+")
     .Cast<Match>()
     .Select(m => m.Value)
     .ToArray();
Run Code Online (Sandbox Code Playgroud)

而不是使用Regex.Split.