正则表达式拆分直到达到数字

时间:2011-12-20 10:32:58

标签: c# regex

我有一批订单代码

MMY7570799 
QW123234 
RTY12312212

每个都有一到三个字符前缀,后跟一个数字。

如何进行拆分,以便使用正则表达式获取任何出现的字符和数字?

4 个答案:

答案 0 :(得分:5)

此正则表达式将为您提供包含所需内容的2个命名捕获组(code& number):

(?<code>[A-Za-z]{1,3})(?<number>\d+)

答案 1 :(得分:4)

以下模式将捕获第一组中的字符和第二组中的数字:

^([A-Z]{1,3})(\d+)$

您可以在此处看到它:http://regexr.com?2vh9c

答案 2 :(得分:1)

您也可以使用Regex.Split()

String s = "MMY7570799";
String[] Result = Regex.Split(s, @"(?<=\P{N})(?=\p{N})");

如果左侧(\P{N})的数字((?<=\P{N}))和右侧的数字(\p{N})((?=\p{N})

\p{N}\p{Number}:任何脚本中的任何数字字符。见regular-expression.info

\P{N}不是\p{N}

答案 3 :(得分:0)

嗯,你可以尝试一下LINQ,以防止一组字符后跟数字。

string original = "MMY7570799";
string characters = new string(s.TakeWhile(c => char.IsLetter(c)).ToArray());
string nums = original.Replace(characters, "");