Урок 3. Соответствие набору символов
В этом уроке вы научитесь работать с наборами символов. В отличие от точки Соответствие одному из нескольких символов
Как вы узнали из предыдущего урока, точке
Чтобы найти только Текст sales1.xls orders3.xls sales2.xls sales3.xls apac1.xls europe2.xls na1.xls na2.xls sa1.xls ca1.xls Регулярное выражение [ns]a.\.xls Результат sales1.xls orders3.xls sales2.xls sales3.xls apac1.xls europe2.xls na1.xls na2.xls sa1.xls ca1.xls
Используемое здесь регулярное выражение начинается с
Замечание
На самом деле шаблон ЗамечаниеОтсюда следует, что проверка регулярных выражений может оказаться делом довольно сложным. Подтвердить, что шаблон найдет то, что вам нужно, довольно просто. Гораздо сложнее убедиться, что вы не найдете то, что вы не хотите. Наборы символов часто используются для выполнения операций поиска (или определения некоторых частей), не зависящих от регистра. Например: Текст The phrase "regular expression" is often abbreviated as RegEx or regex. Регулярное выражение [Rr]eg[Ee]x Результат The phrase "regular expression" is often abbreviated as RegEx or regex.
Используемый здесь шаблон содержит два набора символов: ЗамечаниеЕсли при сопоставлении с шаблоном регистр не учитывается, эта методика не нужна. Такой тип шаблона используется только при выполнении поиска с учетом регистра, если определенные части ищутся без учета регистра. Использование диапазона набора символов
Обратимся к примеру со списком файлов. С последним использованным шаблоном, Наборы символов могут решить эту проблему следующим образом: Текст sales1.xls orders3.xls sales2.xls sales1.xls apac1.xls europe2.xls sam.xls na1.xls na2.xls sa1.xls ca1.xls Регулярное выражение [ns]a[0123456789]\.xls Результат sales1.xls orders3.xls sales2.xls sales1.xls apac1.xls europe2.xls sam.xls na1.xls na2.xls sa1.xls ca1.xls
В этом примере шаблон был изменен так, чтобы первый символ был либо
При работе с регулярными выражениями часто приходится определять диапазоны символов (от Вот тот же самый пример, но на сей раз используется диапазон: Текст sales1.xls orders3.xls sales2.xls sales1.xls apac1.xls europe2.xls sam.xls na1.xls na2.xls sa1.xls ca1.xls Регулярное выражение [ns]a[0-9]\.xls Результат sales1.xls orders3.xls sales2.xls sales1.xls apac1.xls europe2.xls sam.xls na1.xls na2.xls sa1.xls ca1.xls
Шаблон Диапазоны могут состоять не только из цифр. Вот примеры правильных (допустимых) диапазонов:
Любые два символа ASCII могут быть определены как начало и конец диапазона. Однако обычно диапазоны составляются из некоторых (или всех) цифр и некоторых (или всех) алфавитных символов. Замечание
При использовании диапазонов следите, чтобы конец диапазона не был меньше, чем начало диапазона (диапазон типа Замечание
Дефис ( Несколько диапазонов можно объединить в один набор. Например, следующий шаблон соответствует любому алфавитно-цифровому символу на верхнем или нижнем регистре, но не соответствует ничему, что не является ни цифрой, ни алфавитным символом: [A-Za-z0-9] Этот шаблон — сокращение для [ABCDEFGHIJKLMNOPQRSTUVWXYZabcde fghijklmnopqrstuvwxyz0123456789] Как видите, диапазоны намного сокращают запись регулярных выражений.
Ниже приведен еще один пример, на сей раз находятся RGB-значения (цвета, указанные в шестнадцатеричнои нотации, представляющей количество красного, зеленого и синего в создаваемом цвете). В Web-страницах RGB-значения определяются как Текст <BODY BGCOLOR="#336633" TEXT="#FFFFFF" MARGINWIDTH="0" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="0"> Регулярное выражение #[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f] Результат <BODY BGCOLOR="#336633" TEXT="#FFFFFF" MARGINWIDTH="0" MARGINHEIGHT="0" TOPMARGIN="0" LEFTMARGIN="0">
Используемый здесь шаблон содержит символ Соответствие с чем угодно, кроме...Наборы символов обычно используются для того, чтобы определить список символов, любой из которых может соответствовать одному символу. Но иногда проще указать список символов, ни с одним из которых не должен совпадать данный символ. Другими словами, нужно указать соответствие с чем угодно, кроме того, что указано в списке шаблона.
Вместо того чтобы перечислять каждый символ, можно, используя метасимвол Текст sales1.xls orders3.xls sales2.xls sales1.xls apac1.xls europe2.xls sam.xls na1.xls na2.xls sa1.xls ca1.xls Регулярное выражение [ns]a[^0-9]\.xls Результат
sales1.xls
orders3.xls
sales2.xls
sales1.xls
apac1.xls
europe2.xls
sam.xls
na1.xls
na2.xls
sa1.xls
ca1.xls
Используемый в этом примере шаблон — полная противоположность ранее использованного шаблона. Диапазон Замечание
Метасимвол Резюме
Метасимволы |
||