Вы можете сопоставить текст, начинающийся только с начала строки, поставив ^
в начале шаблона.(Начало строки - это либо начало ввода, либо символ, следующий сразу за символом новой строки (\n
).)
Таким образом, следующие строки будут разбиты на целые строки, начинающиеся с The
ивсе остальные целые строки:
^"The ".* { /* yytext is a line starting with The, not including the newline. */ }
.+ { /* yytext is a line not starting with The. */ }
\n ; /* Ignore newline characters */
Примечание: шаблон соответствует только строкам, которые начинаются с The
(включая пробел).Это не то же самое, что строки, начинающиеся с The
(которые будут включать These errors
), и не то же самое, что и строки, начинающиеся с word The
(которые могут включать в себя что-то вроде The--only--way forward
),В общем, правильно подобрать лексическую спецификацию означает тщательно продумать все угловые случаи и решить для каждого, какой будет желаемый результат.