Каково значение' (? i) пароль' в регулярном выражении Python?

Pexpect может использоваться для автоматизации задач в Python (не нуждается в TCL, который будет установлен). Одна из самых простых стандартных программ этого класса 'выполнена ()' стандартная программа. Это принимает словарь ожидаемых шаблонов вопроса как ключи и ответы как значения. Например,

pexpect.run ('scp нечто myname@host.example.com:. ', события = {' (? i) пароль': mypassword})

Я обычно знаю это'?' используется для указания на 0 или 1 случаи предыдущего литерала в строке (для регулярных выражений, который является). Однако здесь, это, кажется, не значение.

Эксперты могут прокомментировать то, что это?

5
задан Wiktor Stribiżew 8 October 2019 в 23:39
поделиться

2 ответа

Это - расширение в синтаксисе регулярного выражения в модуле ре Python. "i" означает, "игнорируют регистр". Это означает, что поиск без учета регистра "пароля" сделан.

от https://docs.python.org/library/re.html#regular-expression-syntax

(? iLmsux) (Одна или несколько букв от набора "я", "L", "m", "s", "u", "x".) Группа соответствует пустой строке; буквы устанавливают соответствующие флаги (ре. Я, ре. L, ре. M, ре. S, ре. U, ре. X) для всего регулярного выражения. Это полезно, если Вы хотите включать флаги как часть регулярного выражения, вместо того, чтобы передать аргумент флага компиляции () функция.

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

4
ответ дан 18 December 2019 в 14:53
поделиться

https://docs.python.org/library/re.html#regular-expression-syntax

(?...), Это - дополнительная нотация (a"?" после" (" не значимо иначе). Первый символ после"?" определяет, каковы значение и дальнейший синтаксис конструкции. Расширения обычно не создают новую группу; (? P...), единственное исключение к этому правилу. Следующее является в настоящее время поддерживаемыми расширениями.

(? iLmsux) (Одна или несколько букв от набора "я", "L", "m", "s", "u", "x".) Группа соответствует пустой строке; буквы устанавливают соответствующие флаги (ре. Я, ре. L, ре. M, ре. S, ре. U, ре. X) для всего регулярного выражения. Это полезно, если Вы хотите включать флаги как часть регулярного выражения, вместо того, чтобы передать аргумент флага компиляции () функция.

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

Таким образом, в этом случае строка является регулярным выражением и установлена быть нечувствительной к регистру.

9
ответ дан 18 December 2019 в 14:53
поделиться
Другие вопросы по тегам:

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