Скачать презентацию Язык регулярные выражения Язык это множество символов Скачать презентацию Язык регулярные выражения Язык это множество символов

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)? . Аналогично, Метасимволы -повторения ? Задает ноль или одно соответствие; например, 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 Метасимволы- сокращения w Слово. То же, что и [a-z. A-Z а-я. А-Я_0 -9] W Все, кроме слов. То же, что и [^a-z. A-Z_09]. s Любое пустое место. То же, что и [ fnrtv]. S Любое непустое место. То же, что и [^ fnrtv]. d Десятичная цифра. То же, что и [0 -9]. D Не цифра. То же, что и [^0 -9]. .

Метасимволы- группирование (? <Name>) При обнаружении соответствия выражению, заданному в круглых скобках, создается именованная Метасимволы- группирование (? ) При обнаружении соответствия выражению, заданному в круглых скобках, создается именованная группа, которой дается имя Name. Например, (? d{7}). При обнаружении последовательности из семи цифр будет создана группа с именем tel () Круглые скобки разбивают регулярное выражение на группы. Для каждого подвыражения, заключенного в круглые скобки, создается группа, автоматически получающая номер. Номера следуют в обратном порядке, поэтому полному регулярному выражению соответствует группа с номером 0

Пример - номер телефона ^((d+)){0, 1}d{3}-d{2}$ • ^ - Этот символ указывает, что здесь Пример - номер телефона ^((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 Namespace System. Text. Regular. Expressions Функции: • Поиск подстрок по шаблону • Замена подстрок по шаблону • Сравнение строки с шаблоном • Разделение строки на подстроки с использованием шаблонов. Строки с@- позволяют не дублировать

Регулярные выражения. NET Конструктор Reg. Ex New перегружен, можно задать только шаблон (переменная типа Регулярные выражения. NET Конструктор Reg. Ex New перегружен, можно задать только шаблон (переменная типа String), либо шаблон и параметры объекта- констант из перечисления Reg. Ex. Options

опции конструктора мы использовать не будем • Compiled Указывает, что регулярное выражение будет скомпилировано опции конструктора мы использовать не будем • Compiled Указывает, что регулярное выражение будет скомпилировано в сборку. Подробнее о компилированных регулярных выражениях читайте ниже. • ECMAScript Устанавливает ECMAScript-совместимость выражения. . • Ignore. Case Определяет, что при проведении операций с выражениями, регистр не имеет значения. • Ignore. Pattern. Whitespace Устраняет пробелы из шаблонов и позволяет использовать комментарии, отмеченные знаком "#". • Multiline Если этот флаг установлен, то метасимволы "^" и "$" отмечают начало и конец каждой строки (строки разделены знаком перевода строки), а не начало и конец всего выражения. • None Указывает, что не установлена ни одна опция. • Right. To. Left Устанавливает, что поиск будет производиться с права на лево, а не наоборот. • Single. Line Указывает, что операции будут производиться в однострочном режиме. Эта константа изменяет значение метасимвола ". ". Он определяет любой символ, включая символ перевода строки.

поиск • Поиск подстрок, соответствующих шаблону производится с помощью перегруженного метода Matches. • 4 поиск • Поиск подстрок, соответствующих шаблону производится с помощью перегруженного метода 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("(? [^@]+)@(?" /> Поиск е-mail using System. Text. Regular. Expressions; ………………… Regex emailregex = new Regex("(? [^@]+)@(? . +)"); String s = "johndoe@tempuri. org"; Match m = emailregex. Match(s); if (m. get_Success()) { System. Console. Write. Line(("User: " +m. get_Groups(). get_Item("user"). get_Value())) ; System. Console. Write. Line(("Host: " + m. get_Groups(). get_Item("host"). get_Value())); } else { System. Console. Write. Line((s + " is not a valid email address"));

\d+)"); String s = "abc 123" src="https://present5.com/presentation/5b0e6f235d80ef8dcf06bc6cef7f34c9/image-19.jpg" alt="поиск многих чисел Regex digitregex = new Regex("(? \d+)"); String s = "abc 123" /> поиск многих чисел Regex digitregex = new Regex("(? \d+)"); String s = "abc 123 def 456 ghi 789"; Match. Collection mc = digitregex. Matches(s); if (mc. get_Count() > 0) { System. Console. Write. Line("Digits: "); Match m; for (int i=0; i

Замена метод Replace может принимать 10 комбинаций следующих параметров : • input - Исходная Замена метод 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("(? [09])"); String before = "Here is so 4848" /> Замена Regex digitregex = new Regex("(? [09])"); String before = "Here is so 4848 me te 88 xt with emb 4493 edded numbers. "; if (args. length > 0) { before = String. Join(" ", args); } String after = digitregex. Replace(before, ""); System. Console. Write. Line(("Before: " + before)); System. Console. Write. Line(("After : " + after)); }

Поиск/замена в Indesign 1. 2. 3. 4. 5. 6. 7. Несколько подряд идущих пробелов Поиск/замена в Indesign 1. 2. 3. 4. 5. 6. 7. Несколько подряд идущих пробелов заменить на один. Между числами поставить неразрывное тире. Вокруг тире - только неразрывные пробелы. Пробел после цифры - неразрывный (например, "3 кг"). кв. м и куб. м - м² и м³. Несколько подряд идущих прописных букв (часто используются для обозначения формы собственности предприятия) не отрывать от последующего слова (например, АОЗТ "Пластмассы"). Кроме того, в списках для их отбивки по левому краю после пробела будем вставлять символ Indent Here.

Поиск/замена в Indesign find 1 = / {2, }/g; replace 1 = Поиск/замена в 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, }) ( Поиск/замена в 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, }) ( Поиск/замена в 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. Поиск/замена в 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 Пример создания свойства компонента private String e_mail; public String E_mail { get { return email; } set { Regex emailregex = new Regex("(? [^@]+)@(? . +)"); if (emailregex. Is. Match(value)) { e_mail = value; } else Message. Box. Show("Ошибка в адресе электропочты " + value);

Регулярные выражения в Total Commander Регулярные выражения в Total Commander