Допускают ли регулярные выражения Python встроенные опции? - PullRequest
4 голосов
/ 13 апреля 2009

В частности, я хотел бы знать, могу ли я указать встроенную опцию в строке шаблона, которая включит многострочный режим. То есть обычно с регулярными выражениями Python многострочный режим включается так:

pattern = re.compile(r'foo', re.MULTILINE)

Мне бы хотелось получить многострочное сопоставление, указав его в строке шаблона, а не используя параметр re.MULTILINE. Вы можете сделать это в Java с помощью встроенного (? M) выражения. например.,

pattern = re.compile(r'(?m)foo')

Возможно ли это в Python или я должен использовать опцию re.M? И вообще, есть ли хороший справочник по опциям встроенных шаблонов в Python?

1 Ответ

6 голосов
/ 13 апреля 2009

да.

Из документов :

(?iLmsux) (одна или несколько букв из набора 'i', 'L', 'm', 's', 'u', 'x'.)

группа соответствует пустой строке; письма установите соответствующие флаги: re.I (игнорировать регистр), re.L (локаль зависимый), re.M (многострочный), re.S (точка соответствует всем), re.U (Unicode зависимый) и re.X (подробный), для все регулярное выражение. (The флаги описаны в модуле Содержание .)

Это полезно, если вы хотите включить флаги как часть регулярное выражение вместо передачи аргумент флага для compile() функция.

Обратите внимание, что флаг (?x) меняет способ выражение разбирается. Так должно быть используется первым в строке выражения, или после одного или нескольких пробелов персонажи. Если есть непробельные символы перед флаг, результаты не определены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...