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