2011-01-25 56 views
2

我有一个形式为AU 12345TAU 12345T1的字符串;基本上它的形式是字母字符,然后是数字,然后以一个或两个字符字母数字字符串结尾。这是解析字符串的最有效方法吗?

我使用下面的正则表达式来得到我的结果:

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

这将是解析这样的字符串的最有效方法是什么?

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

+1

强烈地感受到我过早的优化。 – 2011-01-25 15:28:47

回答

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

这将有正则表达式分别返回每个组。

说了这么多,你可能要确保最后一个/两个字符的字母数字字符串总是以一个字母开头,否则你将无法将第二个标记与第三个标记分开。

相关问题