что означает это регулярное выражение в lex - PullRequest
0 голосов
/ 01 декабря 2011

Я изучаю lex и yacc из книги o'reilly и натолкнулся на пример lex, который обрабатывает команды, числа, строки и новые строки, игнорируя пробелы и комментарии.

Я не могупонять одно конкретное регулярное выражение в примере:

\ "[^ \" \ n] * \ "

Это выражение обрабатывает текст в двойных кавычках. Например: "test regex" будет соответствовать успешно, тогда как test regex не будет соответствовать.

Я прочитал статью Wikipedia о регулярных выражениях, но я все еще не могуполучите это.

Ответы [ 2 ]

3 голосов
/ 01 декабря 2011

double quote (\"), anything but double quote or linefeed ([^\"\n]) 0 или более раз (*), double quote (\").

0 голосов
/ 01 декабря 2011
\"

соответствует начальной кавычке ("). Кавычка экранируется с помощью \, чтобы не прерывать строку регулярного выражения.

[^\"\n]*

соответствует чему угодно, кроме кавычки или конца строки.является концом строки, * означает совпадение 0 раз или более

\"

совпадение с последней цитатой

...