#regex
#регулярное выражение
Вопрос:
Я новичок в регулярных выражениях, и у меня возникли проблемы с поиском того, что означает ‘.-«.
'/^[A-Z '.-]{2,20}$/i'
Пока что из моих исследований я обнаружил, что регулярное выражение начинается с (^) и требует от двух до двадцати ({2,20}) алфавитных (A-Z) символов. Выражение также не чувствительно к регистру (/i).
Есть какие-нибудь намеки на то, что означает ‘.-«?
Комментарии:
1. Что это за язык? Разные языки имеют разные варианты регулярных выражений, поэтому это важно знать, главным образом потому, что кажется, что это механизм экранирования языка, а не регулярное выражение.
2.Кстати, некоторые полезные веб-сайты утилит регулярных выражений: regextester.com regexpal.com gskinner.com/RegExr (первые два расшифровывают регулярные выражения, а последнее является флэш-апплетом, который позволяет вам экспериментировать с построением или декодированием регулярных выражений).
3. @Martinho, людям, похоже, удается отвечать, даже не зная языка. 🙂
4. Технически и педантично это может иметь значение, поскольку существуют языки, которые используют удвоение вместо экранирования для встроенных разделителей, и нельзя давать никаких обещаний относительно библиотеки регулярных выражений такого языка, используя, например, правила Perl / PCRE для случаев, когда обратная косая черта является значимой в регулярном выражении.
Ответ №1:
Символьный класс — это все выражение [A-Z '.-]
целиком, означающее любое из A
— Z
, пробела, одинарной кавычки, точки или дефиса.
необходимо для защиты одинарной кавычки, поскольку она также используется в качестве строковой кавычки. Этот класс символов должен повторяться от 2 до 20 раз, и из-за начальных ^
и конечных $
якорей это должно быть все содержимое соответствующей строки.
Комментарии:
1. Не забывайте, что в конце совпадения может быть
n
символ$
при использовании для привязки конечной позиции.
Ответ №2:
Это означает экранирование одинарной кавычки ( '
), которая ограничивает регулярное выражение (чтобы не заканчивать строку преждевременно), а затем a .
, что означает литерал .
, и a -
, что означает литерал -
.
Внутри диапазона символов .
обрабатывается буквально, и если -
не является частью допустимого диапазона, например a-z
, то оно также обрабатывается буквально.
В вашем регулярном выражении указано совпадение символов a-zA-Z '.-
от 2 до 20 раз со всей строкой, с необязательным завершением n
.
Ответ №3:
Это регулярное выражение находится в строке. Обратная косая черта используется для экранирования одинарной кавычки, чтобы строка не заканчивалась рано, в середине регулярного выражения. Точка и тире — это именно то, чем они являются, точка и тире.
Итак, вы были почти правы, за исключением того, что это 2-20 символов, которые являются буквами, пробелом, одинарной кавычкой, точкой или тире.
Ответ №4:
Это цитирование цитаты.
Регулярное выражение является ^[A-Z'.-]{2,20}$
.
На используемом вами языке программирования вы записываете его в виде строки, заключенной в кавычки:
'SOMETHING'
Чтобы вставить туда одинарную кавычку, она была с обратной косой чертой.
Ответ №5:
Все, что заключено в квадратные скобки, является частью класса character и будет соответствовать одному указанному символу. В вашем примере перечисленные символы — это буквы от A до Z, пробел, одинарная кавычка, точка или дефис. (Обратите внимание, что дефис должен быть указан последним, чтобы избежать указания диапазона, такого как A-Z.) Ваше полное регулярное выражение будет соответствовать от 2 до 20 из перечисленных символов. Одинарная кавычка необходима, чтобы компилятор знал, что вы не заканчиваете строку, которая определяет регулярное выражение.
Некоторые примеры того, что это будет соответствовать:
- ………………..
- abaca af — .
- AAfa- — ..
- .z
И так далее.