Я хочу знать, что регулярное выражение в lex совпадает со строкой, которая не совпадает (начинайте строку и за которой следуют необязательные пробелы, за которыми следует "a =").Я пытаюсь проанализировать язык со следующими типами строк:
a=some value
b=some value
Строки "a =" (b = и т. Д.) Могут начинаться с пробелов, после которых следует другая строка без каких-либо белыхпробелы после = и до новой строки.Например:
a=123 abcde
Здесь «123 abcde» - это значение.Проблема в том, что я могу столкнуться, по крайней мере в теории, со следующим
a=123 a=
или еще хуже:
a=a=
Где первый a = является ключом, а второй a = теперьчасть значения, а не ключевой атрибут.Как отличить первый токен a = от второго?
Я могу сопоставить ключ "a =" со следующим, который обрабатывает начальные пробелы:
^[ \r\t]*"a="
Но как мне сопоставитьвторая строка?Мне нужно регулярное выражение того типа, который говорит, что соответствует строке, которая НЕ (начинается строка и сопровождается необязательными пробелами, за которыми следует символ =) и продолжается до символа новой строки.Основная хитрость заключается в том, чтобы избежать выражения, соответствующего атрибуту a = также.