У меня есть следующее регулярное выражение (пример на Python):
pattern = re.compile(r'^(([a-zA-Z0-9]*[a-zA-Z]+)([\d]+)|([\d]+))$')
Это правильно анализирует любую строку, которая имеет числовой суффикс и необязательный префикс, который является буквенно-цифровым:
a123
a2a123
123
Все правильно увидят 123
в качестве суффикса. Он будет правильно отклонять неверные данные:
abc
123abc
()123 # Or other non-alphanumerics
Однако само регулярное выражение довольно громоздко, и в результате некоторые из групп захвата часто оказываются пустыми, что означает, что мне нужно пройти дополнительный этап их фильтрации. Мне любопытно, есть ли лучший способ думать об этом регулярном выражении, чем «число ИЛИ число, которому предшествует буквенно-цифровое число, заканчивающееся символом»?