Соответствие конкретным символам в FLEX / LEX - PullRequest
0 голосов
/ 22 сентября 2019

Скажем, например, у меня есть строки вроде

Неизвестная страна

Возвращение джедая

Кинофильм

Призрачная угроза

Атака клонов

И я хочу, чтобы он возвращал только те, которые начинаются с "The", как мне сопоставить первые 3 символа конкретно в строке?

1 Ответ

0 голосов
/ 22 сентября 2019

Вы можете сопоставить текст, начинающийся только с начала строки, поставив ^ в начале шаблона.(Начало строки - это либо начало ввода, либо символ, следующий сразу за символом новой строки (\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),В общем, правильно подобрать лексическую спецификацию означает тщательно продумать все угловые случаи и решить для каждого, какой будет желаемый результат.

...