5b0e6f235d80ef8dcf06bc6cef7f34c9.ppt
- Количество слайдов: 38
Язык, регулярные выражения Язык – это множество символов, определяющие правильные фразы, составленные из слов, входящих в словарь. Чаще всего определяют с помощью формальных грамматик.
Язык Удобен для описания формальных языков, в частном для описания языков программирования. Позволяет строить формальные способы разбора языков в виде некоторых табличноориентированных процессов (компиляторов).
идентификатор
Регулярные выражения • правая часть продукции, определенной с помощью операций сцепления (языкового произведения), объединения и повторения Пример: <идент> : : = (А|…|Z) * ((A|…|Z) | (0|…|9)) • Регулярные выражения встроены в большинство современных языков программирования, например: namespace System. Text. Regular. Expressions. NET и оболочки визуального проектирования например, MS VS , Total. Commander (позволяют производить контекстный поиск по строке, описываемой регулярным выражением). Часто используются для анализа текстов, написанных на неформализованных языках в языках скриптов php, Perl. • Пакет отладки для. NET- Regulator.
Регулярные выражения • состоят из обычных символов и специальных символов, так называемых метасимволов • метасимволы или их начальные части: • . ( ) [ ] { } ^ $ + * ? (кроме того, только в определении множеств символов: - ).
Обычные символы -означают сам себя, то есть в искомой строке должен находиться в точности этот символ и ничто иное. То же самое относится к нескольким обычным символам, идущим подряд. • Пример: тест находит строку "тест" в исследуемом тексте. Обратите внимание: "тест" при этом обнаруживается В ЛЮБОМ МЕСТЕ имени файла или текстовой строки.
Метасимволы Предназначен для определения символа, являющегося метасимволом. Например, шаблон ". " соответствует любому символу, а шаблон ". " будет соответствовать точке. ^ Определяет начало входной строки. $ Определяет конец входной строки.
Метасимволы -повторения * Соответствует выражению, находящемуся до знака "*", взятому ноль или более раз. Например, шаблон "[0 -9]*" определяет строку, содержащую ноль или более цифр. + Соответствует выражению, находящемуся до знака "+", взятому один или более раз. Например, шаблон "[0 -9]+" определяет строку, содержащую одну или более цифр.
Метасимволы -повторения ? Задает ноль или одно соответствие; например, w? или (abc)? . Аналогично, {0, 1} {n} Задает в точности n соответствий; например, w{2} {n, } Задает, по меньшей мере, n соответствий; например, (abc){2, } {n, m} Задает, по меньшей мере, n, но не более m соответствий; например, (abc){2, 5}
Метасимволы. Определяет любой символ кроме символа перевода строки. | Разделяет два выражения. Например, шаблону "a|b" будут соответствовать строки "a" и "b". [a-z] Определяет диапазон символов. Например, шаблон "[0 -9]" определяет цифру. [^. . . ] Определяет любой символ, не соответствующий заданному набору. Например, шаблон "[^0 -9]" определяет любой символ, кроме цифры.
Метасимволы- сокращения w Слово. То же, что и [a-z. A-Z а-я. А-Я_0 -9] W Все, кроме слов. То же, что и [^a-z. A-Z_09]. s Любое пустое место. То же, что и [ fnrtv]. S Любое непустое место. То же, что и [^ fnrtv]. d Десятичная цифра. То же, что и [0 -9]. D Не цифра. То же, что и [^0 -9]. .
Метасимволы- группирование (?
Пример - номер телефона ^((d+)){0, 1}d{3}-d{2}$ • ^ - Этот символ указывает, что здесь начинается искомая строка. • (- Код города располагается внутри скобок. • ( - Открывающая скобка. • d+ - После скобки должен располагаться код города - одна или несколько цифр. • ) - Закрывающая скобка. • ) - Закрывающая скобка - метасимвол, указывающий, что здесь заканчивается группируемое выражение (в данном случае, код города). • {0, 1} - Этот метасимвол указывает, что выражение в скобках (код города) может повторяться от нуля до одного раза, то есть код города можно не указывать. • d{3}-d{2} - Три группы цифр - одна группа по три и две по две цифры. Цифры разделены дефисами. • $ - Этот знак показывает, что здесь заканчивается подстрока.
Регулярные выражения. NET Класс Reg. Ex Namespace System. Text. Regular. Expressions Функции: • Поиск подстрок по шаблону • Замена подстрок по шаблону • Сравнение строки с шаблоном • Разделение строки на подстроки с использованием шаблонов. Строки с@- позволяют не дублировать
Регулярные выражения. NET Конструктор Reg. Ex New перегружен, можно задать только шаблон (переменная типа String), либо шаблон и параметры объекта- констант из перечисления Reg. Ex. Options
опции конструктора мы использовать не будем • Compiled Указывает, что регулярное выражение будет скомпилировано в сборку. Подробнее о компилированных регулярных выражениях читайте ниже. • ECMAScript Устанавливает ECMAScript-совместимость выражения. . • Ignore. Case Определяет, что при проведении операций с выражениями, регистр не имеет значения. • Ignore. Pattern. Whitespace Устраняет пробелы из шаблонов и позволяет использовать комментарии, отмеченные знаком "#". • Multiline Если этот флаг установлен, то метасимволы "^" и "$" отмечают начало и конец каждой строки (строки разделены знаком перевода строки), а не начало и конец всего выражения. • None Указывает, что не установлена ни одна опция. • Right. To. Left Устанавливает, что поиск будет производиться с права на лево, а не наоборот. • Single. Line Указывает, что операции будут производиться в однострочном режиме. Эта константа изменяет значение метасимвола ". ". Он определяет любой символ, включая символ перевода строки.
поиск • Поиск подстрок, соответствующих шаблону производится с помощью перегруженного метода Matches. • 4 комбинации параметров. 1 - строка, в которой будет производиться поиск. 2 -позицию, с которой будет начат поиск или указать шаблон (если он не совпадает с шаблоном, указанным в конструкторе при создании объекта). - строка для поиска, шаблон и параметры поиска, заданные комбинацией констант перечисления Reg. Ex. Options • Метод возвращает объект Match. Collection- коллекция, которая содержит объекты Match- можно с помощью индексированного свойства Item коллекции. Нумерация элементов начинается с нуля. Чтобы получить найденную подстроку, следует использовать свойство Value объекта Matсh
[^@]+)@(?" src="https://present5.com/presentation/5b0e6f235d80ef8dcf06bc6cef7f34c9/image-18.jpg" alt="Поиск е-mail using System. Text. Regular. Expressions; ………………… Regex emailregex = new Regex("(?
\d+)"); String s = "abc 123" src="https://present5.com/presentation/5b0e6f235d80ef8dcf06bc6cef7f34c9/image-19.jpg" alt="поиск многих чисел Regex digitregex = new Regex("(?
Замена метод Replace может принимать 10 комбинаций следующих параметров : • input - Исходная строка. • replacement - Строка, на которую будут заменены найденные подстроки. • count - Максимальное количество замен. • startat - Позиция в строке input, с которой будет производиться замена. • pattern - Заменяемый шаблон. • options - Опции. Может принимать константы из перечисления Reg. Ex. Options. • evaluator - Объект Match. Evaluator. Метод возвращает переменную типа String - строка, в которой были произведены замены.
[09])"); String before = "Here is so 4848" src="https://present5.com/presentation/5b0e6f235d80ef8dcf06bc6cef7f34c9/image-21.jpg" alt="Замена Regex digitregex = new Regex("(?
Поиск/замена в Indesign 1. 2. 3. 4. 5. 6. 7. Несколько подряд идущих пробелов заменить на один. Между числами поставить неразрывное тире. Вокруг тире - только неразрывные пробелы. Пробел после цифры - неразрывный (например, "3 кг"). кв. м и куб. м - м² и м³. Несколько подряд идущих прописных букв (часто используются для обозначения формы собственности предприятия) не отрывать от последующего слова (например, АОЗТ "Пластмассы"). Кроме того, в списках для их отбивки по левому краю после пробела будем вставлять символ Indent Here.
Поиск/замена в Indesign find 1 = / {2, }/g; replace 1 = " « // замена множества пробелов find 2 = /(d) ? (-|-) ? (d)/g; replace 2 = "$1" + "u 2011" + "$3 « // неразр. тире между цифрами, удаление лишних пробелов find 3 = /(. ) (-|-) (. )/g; replace 3 = "$1" + "x. A 0" + "u 2013" + "x. A 0" + "$3 « //неразр. пробелы вокруг тире find 40 = /([^м])(d) /g; replace 40 = "$1"+ "$2"+ "x. A 0 « //пробел после числа - неразрывный f ind 41 = /(тыс|млн|млрд). ? ? g; replace 41 = "$1"+ ". x. A 0 « //учитываем множители
Поиск/замена в Indesign • find 5 = /([А-Я]{2, }) ("|")/g replace 5 = "$1"+ "x. A 0"+ "$2" // не отрывать форму собственности от названий find 6 = /^([x 95u 2013u 2014x 2 D])/g; replace 6 = "$1" + "u 2002" + " x 07"//в списке фикс. пробел + indent here find 7 = /кв[. ? ](м)/g; replace 7 = "$1"+ "2" find 8 = /м[23]/;
Поиск/замена в Indesign • find 5 = /([А-Я]{2, }) ("|")/g replace 5 = "$1"+ "x. A 0"+ "$2" • // не отрывать форму собственности от названий find 6 = /^([x 95u 2013u 2014x 2 D])/g; replace 6 = "$1" + "u 2002" + " x 07 « • //в списке - фикс. пробел + indent here find 7 = /кв[. ? ](м)/g; replace 7 = "$1"+ "2" find 8 = /м[23]/;
Поиск/замена в Indesign r = pars[i]. contents. replace(find 1, replace 1) r = r. replace(find 2, replace 2) r = r. replace(find 3, replace 3) r = r. replace(find 40, replace 40) r = r. replace(find 41, replace 41) r = r. replace(find 5, replace 5) r = r. replace(find 6, replace 6) r = r. replace(find 7, replace 7)
Пример создания свойства компонента private String e_mail; public String E_mail { get { return email; } set { Regex emailregex = new Regex("(?
Регулярные выражения в Total Commander


