#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. Не могли бы вы предоставить какие-либо дополнительные разъяснения относительно значения привязанного, или, более конкретно, где привязанное выражение ищет символ, соответствующий классу? Спасибо за помощь и быстрый ответ.