我有一个AU 12345T
或AU 12345T1
形式的字符串;基本上它的形式是字母字符后跟一个数字,然后以一个或两个字符的字母数字字符串结尾。
我使用以下正则表达式来获取结果:
^[a-z|A-Z]+|[0-9]+|[a-z|A-Z][0-9]?
这是解析这样一个字符串的最有效方法吗?
因此,对于示例AU 12345T
,我希望将结果分为三个标记:AU
,12345
,T
;对于AU 12345T1
,它应为AU
,12345
,T1
(因为结尾字符可以是字母数字,最大长度为2)
答案 0 :(得分:1)
这应该这样做:
[A-Za-z]+\s?[0-9]+[A-Za-z0-9]{1,2}?
如果你想按照你的说法分开字符串,请在块周围加上括号,如下所示:
([A-Za-z]+)\s?([0-9]+)([A-Za-z0-9]{1,2}?)
这将使正则表达式单独返回每个组。
所有这些都说,你可能想要确保最后的一个/两个字符的字母数字字符串总是以字母开头,否则你将无法将第二个令牌与第三个令牌分开。