这是解析字符串的最有效方法吗?

时间:2011-01-25 15:26:11

标签: java regex

我有一个AU 12345TAU 12345T1形式的字符串;基本上它的形式是字母字符后跟一个数字,然后以一个或两个字符的字母数字字符串结尾。

我使用以下正则表达式来获取结果:

^[a-z|A-Z]+|[0-9]+|[a-z|A-Z][0-9]?  

这是解析这样一个字符串的最有效方法吗?

因此,对于示例AU 12345T,我希望将结果分为三个标记:AU12345T;对于AU 12345T1,它应为AU12345T1(因为结尾字符可以是字母数字,最大长度为2)

1 个答案:

答案 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}?)

这将使正则表达式单独返回每个组。

所有这些都说,你可能想要确保最后的一个/两个字符的字母数字字符串总是以字母开头,否则你将无法将第二个令牌与第三个令牌分开。