2013-02-27 4 views
0

Это часть проекта класса. Я построил сканер с помощью Java, который сканирует код Python. Теперь мне нужно сравнить время выполнения с реализацией Flex сканера Python.Как правильно сопоставить строковый литерал Python с регулярным выражением?

Так что я пытаюсь сопоставить строковый литерал Python с помощью Flex. Я пытаюсь преобразовать string literal specification из документов Python в регулярное выражение C.

Это то, что я до сих пор:

[r|u|ur|R|U|UR|Ur|uR|b|B|br|Br|bR|BR]?('(([^\\]|[^\n]|[^'])|\\.)*'|\"(([^\\]|[^\n]|[^'])|\\.)*\"|'''([^\\]|\\.)*'''|\"\"\"([^\\]|\\.)*\"\"\")

Но когда я применяю его на следующий текст:

r'' lol 
r'' 

Это соответствует обеим линиям. Я хочу, чтобы он соответствовал каждому r'' отдельно и игнорировал что-либо за пределами кавычек.

ответ

0

"Любой исходный символ, кроме" \ "или новой строки или цитаты", переводится в [^\\\n\'] вместо того, что я ранее писал выше, [^\\]|[^\n]|[^'].

Обнаружена ошибка с regex101.com. Он имеет действительно полезный инструмент анализа регулярных выражений.

Смежные вопросы