Подтвердить что ты не робот

О вопросительном знаке в регулярном выражении

Я видел регулярное выражение (?i). Итак, что это значит, когда мы помещаем знак вопроса перед символом?

4b9b3361

Ответ 1

В целом это ничего не значит и может даже привести к ошибке (если знак вопроса не соответствует допустимому символу). Но есть определенные символы, где это имеет эффект, а именно, если этот символ также используется как modifier.

regular-expressions.info говорит об этом конкретном синтаксисе:

Современные ароматы регулярных выражений позволяют применять модификаторы только к части регулярного выражения. Если вы вставляете модификатор (?ism) в середину регулярного выражения, модификатор применяется только к части регулярного выражения справа от модификатора. Вы можете отключить режимы, указав знак минуса. Все режимы после знака минус будут отключены. Например. (?i-sm) включает чувствительность к регистру и отключает как однострочный, так и многострочный режим.

Не все ароматы регулярных выражений поддерживают это. JavaScript и Python применяют все модификаторы режимов ко всему регулярному выражению. Они не поддерживают синтаксис (?-ismx), так как отключить параметр бессмысленно, если модификаторы режима применяются ко всем регулярным выражениям. Все параметры отключены по умолчанию.

Вы можете быстро проверить, как используется при использовании эффекта регулярного выражения. Регулярное выражение (?i)te(?-i)st должно соответствовать test и test, но не test или test.

?i означает, что все, что следует за этими символами, должно быть нечувствительным к регистру.

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