Я пытаюсь создать регулярное выражение питона, для СЛОЯ, который будет соответствовать комментарии видаPython regex для сопоставления одной строки и нескольких строк комментариев.
// some comment
и
/* comment
more comment */
Так что я попытался
t_COMMENT = r'//.+ | /\*.+\*/'
, но это Безразлично 't допускает многострочные комментарии и когда я пытаюсь решить эту проблему, используя опции «dot matches all», такие как
t_COMMENT = r'//.+ | (?s) /\*.+\*/'
это приводит к типу комментариев «//», соответствующему многим строкам. Кроме того, если я пытаюсь иметь два отдельных регулярных выражений, как
t_COMMENT = r'//.+'
t_COMMENT2 = r'(?s) /\*.+\*/'
«//» комментарий типа до сих пор соответствует несколько строк, как если точка соответствует выбран все опции.
Кто-нибудь знает, как это решить?
Я сильно подозреваю, что это плохая идея. Попытка сделать слишком большой (грамматический) синтаксический анализ с использованием сложных регулярных выражений является антитезой создания системы lexer/parser. Я бы предположил, что у вас есть маркеры для комментариев в одной строке, а начало и конец нескольких строк. Грамматика, построенная вокруг этого анализатора, может отбросить весь вход, найденный между многострочным началом и концом. –
Можете ли вы дать ответ на основе вашей идеи? – Zvika