русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Метасимволы


Дата добавления: 2015-07-09; просмотров: 571; Нарушение авторских прав


Ранее мы использовали только литеральные символы, например, ‘s’. Он совпадает только с символом ‘s’ в строке, ну и, быть может, ‘S’ при наличии модификатора /i. Однако существуют символы, имеющие специальное значение – метасимволы. Они могут обозначать целый класс символов.

Метасимвол ‘.’ совпадает с любым одиночным символом в строке, кроме ‘\n’.

 

Пример Js44

 

Так,

var re = /l.t/ig;

var st = "A little plot. l\nt";

alert(st.match(re));

выведет

 

 

Здесь точка в первый раз совпала с символом ‘i’, а второй – с ‘o’. А вот совпадения в конце нету из-за того, что метасимвол ‘.’ не совпадает с ‘\n’.

 

Пример Js45

 

 

Если же в строке требуется найти именно точку, необходимо отменить её специальную интерпретацию – экранировать. Для этого перед метасимволом ставится обратный слэш:

var re = /l\.t/ig;

var st = "A little L.T.C.";

alert(st.match(re));

Пример выводит

 

 

 

При таком объявлении шаблона символ ‘/’ тоже необходимо экранировать, так как в противном случае он будет проинтерпретирован как конец шаблона.

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

 

Пример Js46

 

 

var re = /C:\\t/ig;

var st = "C:\\tr";



alert(st.match(re));

 

 

Заметим, что при объявлении st \ нужно экранировать, так как иначе последовательность \t будет воспринята как символ табуляции.

 

Пример Js47

 

 

Из-за того, что обратный слэш имеет специальное значение и в шаблоне, и в строке, могут возникнуть трудности при создании объектов RegExp: код

var re = new RegExp("C:\\t", "ig");

var st = "C:\\tr";



alert(st.match(re));

вопреки ожиданиям выводит

 

 

 

Происходит это потому, что “C:\\t” воспринимается как /C:\t/, и ищется символ табуляции. Правильный вариант таков:

 

Пример Js48

 

 

var re = new RegExp("C:\\\\t", "ig");

var st = "C:\\tr";



alert(st.match(re));

 

 

 

Метасимвол ‘^’ совпадает с началом строки. Так как по сути начало строки не является символом, ‘^’ называют метасимволом нулевой ширины. Аналогично, метасимвол ‘$’ совпадает с концом строки.

 

Пример Js49

 

Поэтому код

var re = /^str$/;

var st = "str"; var s = " str";

alert(st.match(re) + ' ' + s.match(re));

выводит

 

 

 

Пример Js50

 

Заметим, что строка воспринимается как единое целое, то есть код

var re = /^str$/g;

var st = "str\nstr";

alert(st.match(re));

выводит

 

 

 

- совпадения нету, потому что ‘\n’ не разрывает строку на две строки.

 

Однако модификатор /m позволяет считать символы ‘\n’ разделителями строк:

Пример Js51

 

var re = /^str$/gm;

var st = "str\nstr";

alert(st.match(re));

 

 

 

Вот, мы и изучили все виды модификаторов: /i, /g, /m. Других в JavaScript нет. Хотя в других языках могут встретиться модификаторы /s, позволяющий метасимволу ‘.’ совпадать с ‘\n’, /x, позволяющий вставлять комментарии внутрь шаблона, и /o для однократной компиляции шаблона в противовес динамическому созданию регулярных выражений.



<== предыдущая лекция | следующая лекция ==>
Regular Expressions | Классы символов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 2.815 сек.