Это самый эффективный способ разбора строки? - PullRequest
2 голосов
/ 25 января 2011

У меня есть строка вида 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)

1 Ответ

1 голос
/ 25 января 2011

Это должно сделать это:

[A-Za-z]+\s?[0-9]+[A-Za-z0-9]{1,2}?

Если вы хотите разделить строки, как вы сказали, поместите круглые скобки вокруг блоков, например:

([A-Za-z]+)\s?([0-9]+)([A-Za-z0-9]{1,2}?)

При этом регулярное выражение будет возвращать каждую группу в отдельности.

При этом, возможно, вы захотите убедиться, что последняя буквенно-цифровая строка из одного или двух символов всегда начинается с буквыиначе у вас не будет возможности отделить второй токен от третьего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...