正则表达式/字符串拆分

时间:2016-06-20 23:24:02

标签: c# .net regex string variant

我对RegEx并不熟悉。 但是,我正在寻找与值的变体匹配的表达式。

我有一个值列表(总共约30k):

ABCD1234
EF56789
GH123456J
GH123456JK
LMN654987P

我需要能够在前面分割字母,数字是中间,最后的字母分成3个不同的变量。这些值在开始时具有未确定的字符数量,在中间具有未确定的数字量并且在结尾处具有未确定的字母数量。

感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

您可以使用正则表达式捕获这样的组而不是拆分:

([A-Z]+)([0-9]+)([A-Z]*)

<强> Working demo

此外,如果您希望将字符串匹配为不区分大小写,则可以使用i标记。

<强> Working demo

匹配信息:

MATCH 1
1.  [0-4]   `ABCD`
2.  [4-8]   `1234`
3.  [8-8]   ``
MATCH 2
1.  [9-11]  `EF`
2.  [11-16] `56789`
3.  [16-16] ``
MATCH 3
1.  [17-19] `GH`
2.  [19-25] `123456`
3.  [25-26] `J`
MATCH 4
1.  [27-29] `GH`
2.  [29-35] `123456`
3.  [35-37] `JK`
MATCH 5
1.  [38-41] `LMN`
2.  [41-47] `654987`
3.  [47-48] `P`

此外,如果您不想要空内容,那么您可以使用此正则表达式:

([a-z]+)([0-9]+)([a-z]+)?

答案 1 :(得分:0)

您可以简单地遍历每一行,并使用整个数字块作为分隔符将它们拆分。

如果在用于标识分隔符的正则表达式中包含捕获组,则分隔符将包含在返回的数组中。

string[] substrings = Regex.Split(originalString, @"([0-9]+)")