特定长度的 RegEX 字符串
RegEX string to specific lengths
嘿,我在 RegEX 方面很糟糕,所以我发布了这个问题,希望 RegEX 大师能够轻松知道并分享答案。
我有以下字符串类型:
508815 AYBK1619RAUEZP
AWBZ4222TYBE1207CWSWER
DEFAULT EP1 O25R60
我需要这种格式(拆分):
508815 AYBK1619 RAU EZP
AWBZ4222 TYBE1207 CWS WER
DEFAULT EP1 O25 R60
所以:
xxxxxxxx xxxxxxxx xxx xxx
- 字符串中的前 8 个字符
- 字符串中的下 8 个字符
- 字符串中的下 3 个字符
- 字符串中的最后 3 个字符
我可以执行 Mid(x,x) 和所有这些操作,但我认为使用 RegEX 会使代码更快更简洁。
任何帮助都会很棒!谢谢!
您可以使用以下正则表达式来获取您需要的内容:
^(\w{0,8})\s*(\w+)\s*(\w{3})(\w{3})$
此正则表达式将:
- 匹配字符串开头的0到8个单词字符
- 后跟 0 个或更多空格
- 后跟1个或多个单词字符
- 后跟 0 个或更多空格
- 后接3个字
- 后接3个字
- 字符串结束
单词字符 (\w
) 是任何字母数字字符加上下划线字符。例如,如果您严格只想要大写字母,则可以使用 [A-Z]
将 \w
替换为 A-Z 的字符 class(A-Z 范围内的任何字母)
如果您希望实际使用正则表达式在这些位置进行拆分,您可以使用以下内容:
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"
嘿,我在 RegEX 方面很糟糕,所以我发布了这个问题,希望 RegEX 大师能够轻松知道并分享答案。
我有以下字符串类型:
508815 AYBK1619RAUEZP
AWBZ4222TYBE1207CWSWER
DEFAULT EP1 O25R60
我需要这种格式(拆分):
508815 AYBK1619 RAU EZP
AWBZ4222 TYBE1207 CWS WER
DEFAULT EP1 O25 R60
所以: xxxxxxxx xxxxxxxx xxx xxx
- 字符串中的前 8 个字符
- 字符串中的下 8 个字符
- 字符串中的下 3 个字符
- 字符串中的最后 3 个字符
我可以执行 Mid(x,x) 和所有这些操作,但我认为使用 RegEX 会使代码更快更简洁。
任何帮助都会很棒!谢谢!
您可以使用以下正则表达式来获取您需要的内容:
^(\w{0,8})\s*(\w+)\s*(\w{3})(\w{3})$
此正则表达式将:
- 匹配字符串开头的0到8个单词字符
- 后跟 0 个或更多空格
- 后跟1个或多个单词字符
- 后跟 0 个或更多空格
- 后接3个字
- 后接3个字
- 字符串结束
单词字符 (\w
) 是任何字母数字字符加上下划线字符。例如,如果您严格只想要大写字母,则可以使用 [A-Z]
\w
替换为 A-Z 的字符 class(A-Z 范围内的任何字母)
如果您希望实际使用正则表达式在这些位置进行拆分,您可以使用以下内容:
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"