常规 Expression/String 拆分
Regular Expression/String split
我对 RegEx 的熟悉程度可能不如我应该的那样。
但是,我正在寻找匹配值变体的表达式。
我有一个值列表(总共大约 30k):
ABCD1234
EF56789
GH123456J
GH123456JK
LMN654987P
我需要能够将前面的字母、中间的数字和最后的字母拆分成 3 个不同的变量。这些值的开头有不确定数量的字符,中间有不确定数量的数字,结尾有不确定数量的字母。
感谢任何帮助。
您可以像这样使用正则表达式来捕获组而不是拆分:
([A-Z]+)([0-9]+)([A-Z]*)
此外,如果你想匹配不区分大小写的字符串,你可以使用 i
标志。
比赛信息:
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]+)?
您可以简单地遍历每一行并使用整个数字块作为分隔符来拆分它们。
当您在用于标识定界符的正则表达式中包含捕获组时,定界符将包含在返回的数组中。
string[] substrings = Regex.Split(originalString, @"([0-9]+)")
我对 RegEx 的熟悉程度可能不如我应该的那样。 但是,我正在寻找匹配值变体的表达式。
我有一个值列表(总共大约 30k):
ABCD1234
EF56789
GH123456J
GH123456JK
LMN654987P
我需要能够将前面的字母、中间的数字和最后的字母拆分成 3 个不同的变量。这些值的开头有不确定数量的字符,中间有不确定数量的数字,结尾有不确定数量的字母。
感谢任何帮助。
您可以像这样使用正则表达式来捕获组而不是拆分:
([A-Z]+)([0-9]+)([A-Z]*)
此外,如果你想匹配不区分大小写的字符串,你可以使用 i
标志。
比赛信息:
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]+)?
您可以简单地遍历每一行并使用整个数字块作为分隔符来拆分它们。
当您在用于标识定界符的正则表达式中包含捕获组时,定界符将包含在返回的数组中。
string[] substrings = Regex.Split(originalString, @"([0-9]+)")