Регулярное выражение в лекс. Почему флекс ведет себя так

Рассмотрим простое целое число, идентифицирующее выражение, например:

[0-9]+ printf("Integer");

Теперь, если я дам 123 в качестве входа он возвращает Integer, справедливо. Теперь, если я дам s123 в качестве ввода он распечатывает sInteger, Непревзойденный s печатается по умолчанию ECHO это круто со мной Но почему Integer также напечатано. Лекс не должен возвращаться просто s? Мой ввод рассматривается как целая строка, верно? Я имею в виду s123 is considered as a 1 full input?. Как только s встречается который не соответствует [0-9]+ так что должен просто echo default unmatched value s123 но почему sInteger?

1 ответ

Решение

Строка s123 подбирается регулярным выражением [0-9]+, Если вы хотите сопоставить строки, которые состоят только из целых чисел, вы должны попробовать ^[0-9]+$,

Другие вопросы по тегам