Как установить флаг ignorecase для части регулярного выражения в Python?

просто помещенный: ДА

время необходимо думать о том, необходимо ли записать документ, лучше инвестирован в письменной форме документ.

Запись остроты лучше, чем проведение времени для того, чтобы не зарегистрировать метод вообще в конце.

5
задан Dmitry Nedbaylo 21 September 2009 в 15:35
поделиться

2 ответа

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

#! /usr/bin/env python

import re

token_re = re.compile(r'use\s+([a-z0-9]+)\s+code', re.IGNORECASE)
def find_token(s):
    m = token_re.search(s)
    if m is not None:
        token = m.group(1)
        if token.isupper():
            return token

if __name__ == '__main__':
    for s in ['Use HELLO1 code',
              'USE hello1 CODE',
              'this does not match',
             ]:
        print s, '->',
        print find_token(s)

Вот вывод программы:

Use HELLO1 code -> HELLO1
USE hello1 CODE -> None
this does not match -> None
10
ответ дан 18 December 2019 в 08:29
поделиться

Согласно документации , это невозможно. Синтаксис (? X) позволяет изменять только флаг для всего выражения. Следовательно, вы должны разделить это на три регулярных выражения и применить их одно за другим или , вручную «игнорировать регистр»: / [uU] [sS] [eE] ...

3
ответ дан 18 December 2019 в 08:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: