Что означает ‘.- в регулярном выражении

#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

И так далее.