Почему это регулярное выражение не совпадает, если его параллель соответствует?

#regex #regex-negation

#регулярное выражение #регулярное выражение-отрицание

Вопрос:

Я новичок в написании регулярных выражений, и у меня есть вопрос.

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

[^a-z]

Я бы использовал его, потому что этот символьный класс соответствует всему, что содержит не строчные буквы, но при передаче этой строки:

apple 12345

       ^not a lowercase letter.
  

оно не выдает совпадений.

Однако, если бы я передал ему это:

[^0-9]

регулярное выражение является

(Я использую последнюю версию Regetron для тестирования своих выражений)

Заранее спасибо.

Комментарии:

1. Похоже, проблема с вашими инструментами. Оба ваших регулярных выражения совпадают: смотрите demo1 и demo2 Первое находит символы, которые не являются строчными буквами. Второе находит символы, которые не являются цифрами ASCII.

2. Если вы ищете совпадающие символы, которые не являются ни a-z ни 0-9 , то смотрите [^a-z0-9] . Если вы ищете соответствие этой строке, смотрите [a-z0-9 ] . (Предполагается использование пробела.)

3. это то, что я ответил.

Ответ №1:

В зависимости от используемого вами языка программирования или библиотеки регулярных выражений совпадение может быть закреплено, а может и не быть. Не привязанное совпадение найдет совпадение в любом месте строки поиска. Привязанное соответствие будет иметь неявные ^ и / или $ привязки, привязывающие регулярное выражение к началу (или всей) строки поиска.

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

 .*[^a-z].*
  

Комментарии:

1. 1, приятное устранение неполадок, это звучит точно так же, как то, что происходит с Джо. 🙂

2. Не могли бы вы предоставить какие-либо дополнительные разъяснения относительно значения привязанного, или, более конкретно, где привязанное выражение ищет символ, соответствующий классу? Спасибо за помощь и быстрый ответ.