Регулярное выражение в лекс. Почему флекс ведет себя так
Рассмотрим простое целое число, идентифицирующее выражение, например:
[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]+$
,