嘿所有我在RegEX都很糟糕,所以我发布这个问题,希望RegEX Guru能够轻松地知道并分享答案。
我有以下字符串类型:
508815 AYBK1619RAUEZP
AWBZ4222TYBE1207CWSWER
DEFAULT EP1 O25R60
我需要这种格式(拆分):
508815 AYBK1619 RAU EZP
AWBZ4222 TYBE1207 CWS WER
DEFAULT EP1 O25 R60
所以: xxxxxxxx xxxxxxxx xxx xxx
我可以做Mid(x,x)以及所有这些,但我认为使用RegEX会更快更清晰的代码。
任何帮助都会很棒!谢谢!
答案 0 :(得分:2)
如果您希望实际使用正则表达式在这些位置进行拆分,则可以使用以下内容:
Dim s As String = "508815 AYBK1619RAUEZP"
Dim m() As String = Regex.Split(s, "(?<=^.{8})|(?<=^.{16})|(?<=^.{19})")
Console.WriteLine(String.Join(" ", m)) '=> "508815 AYBK1619 RAU EZP"
你也可以匹配那些位置的子串而不是split
ting ...
Dim s As String = "AWBZ4222TYBE1207CWSWER"
Dim m As Match = Regex.Match(s, "^(.{8})(.{8})(.{3})(.{3})$")
If m.Success Then
Console.WriteLine(
String.Join(" ",
m.Groups(1).Value,
m.Groups(2).Value,
m.Groups(3).Value,
m.Groups(4).Value
))
End If
'**Output => "AWBZ4222 TYBE1207 CWS WER"
答案 1 :(得分:1)
您可以使用以下正则表达式来获取所需内容:
^(\w{0,8})\s*(\w+)\s*(\w{3})(\w{3})$
这个正则表达式将:
单词字符(\w
)是任何字母数字字符,加上下划线字符。例如,如果您只想要大写字母,则可以使用\w
[A-Z]
替换为字符类A-Z(A-Z范围内的任何字母)