*, ?, + символы означают совпадение с этим символом. Какой символ означает "не совпадать" с этим? Примеры помогут.
Какой оператор регулярного выражения означает "Не совпадать" с этим символом?
Ответ 1
Вы можете использовать отрицательные классы символов для исключения определенных символов: например, [^abcde] будет соответствовать всем, кроме символов a, b, c, d, e.
Вместо того, чтобы указывать все символы буквально, вы можете использовать сокращенные внутренние классы символов: [\w] (строчный) будет соответствовать любому "символу слова" (буква, цифры и подчеркивание), [\w] (верхний регистр) будет соответствовать любому слову, кроме символов слова; аналогично, [\d] будет соответствовать цифрам 0-9, а [\d] соответствует чему угодно, кроме цифр 0-9 и т.д.
Если вы используете PHP, вы можете взглянуть на документацию классов символов регулярных выражений.
Ответ 2
Есть два способа сказать "не совпадать": диапазоны символов и отрицательные обратные отображения с нулевой шириной /lookbehind.
Первые: не соответствуют a, b, c или 0: [^a-c0]
Последнее: соответствует любой трехбуквенной строке, кроме foo и bar:
(?!foo|bar).{3}
или
.{3}(?<!foo|bar)
Кроме того, поправка для вас: *, ? и + фактически не соответствует чему-либо. Они являются операторами повторения и всегда следуют за соответствующим оператором. Таким образом, a+ означает совпадение одного или нескольких из a, [a-c0]+ означает совпадение одного или нескольких из a, b, c или 0, тогда как [^a-c0]+ будет соответствовать одному или нескольким из все, что не было a, b, c или 0.
Ответ 3
[^] (внутри []) является отрицанием в регулярном выражении, тогда как ^ является "началом строки"
[^a-z] соответствует любому одиночному символу не от "a" до "z"
^[a-z] означает, что строка начинается с "a" до "z"
Ответ 4
^, используемый в начале диапазона символов, или отрицательные утверждения lookahead/lookbehind.
>>> re.match('[^f]', 'foo')
>>> re.match('[^f]', 'bar')
<_sre.SRE_Match object at 0x7f8b102ad6b0>
>>> re.match('(?!foo)...', 'foo')
>>> re.match('(?!foo)...', 'bar')
<_sre.SRE_Match object at 0x7f8b0fe70780>