Ниже приведено регулярное выражение PHP, предназначенное для сопоставления (многострочных) строк внутри исходного кода PHP или JavaScript (из этот пост), но я подозреваю, что в нем есть проблемы. Что такое буквальный Python (или еще PERL) эквивалент этого?
~'(\\.|[^'])*'|"(\\.|[^"])*"~s
- модификатор s означает, что точка соответствует всем символам, включая новая линия; в Python это
re.compile(..., re.DOTALL)
- Я совершенно не понимаю намерения ведущего
\\.
? Это уменьшает до.
? Двойная обратная косая черта должна дважды экранировать ее в PHP? разрешение в каждой позиции совпадения
\\.
или[^']
(любой символ без кавычек) кажется мне полным излишеством, возможно, это объясняет, почему регулярное выражение этого человека взрывается. Разве группа[^']
уже не соответствует всему, что делает.
с модификатором s, наверняка она должна соответствовать новым строкам?для создания двух версий регулярного выражения с одинарными и двойными кавычками в Python можно использовать этот двухэтапный подход
Обратите внимание, что более простую версию этого регулярного выражения также можно найти в списке примеров регулярных выражений PHP в разделе Программирование: Строка.