Regex к *не* соответствуют любым символам

Я знаю, что это - некоторая странная цель здесь, но для быстрой и грязной фиксации для одной из нашей системы мы не должны фильтровать вход и позволять повреждению войти в систему.

Мой текущий regex для этого"\^.*"

Проблема с этим состоит в том, что это не соответствует символам как запланировано..., но для одного соответствия это действительно работает. Строка, которые заставляют его не работать, является ^ jj (в основном что-либо, что имеет ^...).

Каков был бы лучший способ не соответствовать каким-либо символам теперь? Я думал об удалении \ но только выполнение этого преобразует "не" в, "запускаются с"...

37
задан Erick 28 May 2010 в 15:12
поделиться

7 ответов

Символ ^ не означает «не», кроме как внутри класса символов ([]). Если вы не хотите ничего сопоставлять, вы можете использовать отрицательный просмотр вперед, который соответствует чему угодно: (?!. *) .

66
ответ дан 27 November 2019 в 04:06
поделиться

Вместо того, чтобы пытаться не сопоставить никакие символы, почему бы просто не сопоставить все символы? ^. * $ должно помочь. Если вам не нужно сопоставлять какие-либо символы, попробуйте ^ \ j $ (Конечно, при условии, что ваш обработчик регулярных выражений не выдаст ошибку, если вы предоставите ему недопустимый класс символов. Если это так, попробуйте ^ () $ . Быстрый тест с помощью RegexBuddy показывает, что это может сработать.

1
ответ дан 27 November 2019 в 04:06
поделиться

^ только не в классе (например, [^ a-z] означает что угодно, кроме a-z). Вы превратили его в буквальный ^ с помощью обратной косой черты.

Вы пытаетесь сделать [^] *, но это незаконно. Вы можете попробовать что-то вроде

" {10000}"

, которое будет соответствовать ровно 10 000 пробелов, если это больше, чем ваш максимальный ввод, он никогда не должен совпадать.

0
ответ дан 27 November 2019 в 04:06
поделиться

Эх, я знаю, что это немного поздно, но вы просто не можете прочитать ввод, если регулярное выражение пусто

-2
ответ дан 27 November 2019 в 04:06
поделиться

Простое и дешевое регулярное выражение, которое никогда не будет соответствовать чему-либо, - это сопоставление с чем-то, что просто несовместимо, например: \ b \ B .

Это просто невозможно для этого регулярного выражения, поскольку это противоречие.

Ссылки

48
ответ дан 27 November 2019 в 04:06
поделиться

Вы хотите ничего не искать? Neg lookarounds кажется очевидным, но может быть медленным, возможно ^$ (соответствует только пустой строке) как альтернатива?

-1
ответ дан 27 November 2019 в 04:06
поделиться

Вы пробовали это простое регулярное выражение? [^.] *

-2
ответ дан 27 November 2019 в 04:06
поделиться
Другие вопросы по тегам:

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