Регулярні вирази Notepad: опис, заміна і приклади
Опубликованно 12.04.2018 17:42
Регулярний вираз Notepad - це теорія формальної мови, послідовність символів, що визначають шаблон пошуку. Зазвичай цей шаблон потім використовується рядковими алгоритмами пошуку для операцій «знайти» або «знайти і замінити» в рядках. Але давайте розберемося з усім по порядку і розглянемо цю тему більш детально.Опис принципу роботи регулярних виразів
Концепція виникла в 1950-х роках, коли американський математик Стівен Коул Кліні формалізував опис звичайної мови. Ця концепція широко використовувалася з утилітами обробки тексту Unix. З 1980-х років існують різні синтаксисы для написання регулярних виразів, один із яких є стандартом POSIX, а інший, який широко використовується, є синтаксисом Perl.
Регулярні вирази Notepad використовуються в пошукових системах, для пошуку і заміни діалогів текстових процесорів і текстових редакторів, в утилітах обробки текстів, таких як sed і AWK, і в лексичному аналізі. Багато мови програмування надають можливості регулярного виразу, вбудовані або через бібліотеки. Як видалити порожні рядки в регулярних виразах Notepad?
Термін "регулярні вирази" часто використовується для позначення конкретного стандартного текстового синтаксису (відмінного від математичного позначення, описаного нижче), для подання шаблонів, які повинні відповідати тексту. Кожен символ в регулярному виразі розуміється як метасимвол (з його особливим змістом) або звичайний символ (з його буквальним значенням). Разом метасимволи і буквені символи можуть використовуватися для ідентифікації текстового матеріалу заданого шаблону або обробки декількох примірників.
Шаблони можуть варіюватися від точного рівності до загального подібності, контрольованого метасимволи. Синтаксис метасимвола розроблений спеціально для подання заданих цілей в стислій і гнучкої форми управління автоматизацією обробки тексту з різних вхідних даних. Це зручно для введення з використанням стандартної ASCII-клавіатури.Регулярний вираз Notepad: приклади та шаблони
Регулярний вираз, часто зване шаблоном, є виразом, який використовується для вказівки набору рядків, необхідних для певної мети. Простим способом вказати кінцевий набір рядків списку його елементів. Однак часто використовуються більш стислі способи вказівки потрібного набору рядків. Наприклад, набір, містить три рядки - Handel, H?ndel і Haendel, може бути заданим шаблоном H (? | ae?) Ndel, так як цей шаблон відповідає кожній з трьох рядків. У більшості формалізмів, якщо існує хоча б одне регулярний вираз Notepad, яка відповідає певному набору, існує нескінченна кількість інших регулярних виразів, які також відповідають йому, та специфікація не є унікальною. Більшість формалізмів надають наступні операції для побудови регулярних виразів.Історія виникнення
Регулярні вирази виникли в 1951 році, коли математик Стівен Коул Кліні описав звичайні мови, використовуючи математичні позначення, звані регулярними множинами. Вони виникли в теоретичної інформатики, в подполях теорії автоматів (моделі обчислень), описі та класифікації формальних мов. Інші ранні реалізації зіставлення моделей включають в себе мову SNOBOL, який використовує не регулярні вирази, а його власні конструкції, що відповідають шаблону.
Перенесення рядка в регулярних виразах Notepad широко використовується з 1968 року в двох цілях: зіставлення зразків в текстовому редакторі та лексичний аналіз в компіляторі. Серед перших появ регулярних виразів в програмній формі було те, що Кен Томпсон побудував запис Клейна в редакторі QED як засіб для зіставлення шаблонів в текстових файлах. Для швидкості Томпсон реалізував порівняння регулярних виразів з допомогою компіляції «точно в час» (JIT) до коду IBM 7094 в системі сумісного часу - важливий ранній приклад компіляції JIT. Пізніше він додав цю можливість редактор Unix ed, що в кінцевому підсумку призвело до застосування популярного інструменту пошуку grep для використання регулярних виразів. Приблизно в той же час, коли Томпсон розробив QED, група дослідників, включаючи Дугласа Т. Росса, впровадила інструмент, заснований на регулярних виразах, які використовуються для лексичного аналізу в дизайні компілятора.Розвиток концепції
Багато варіації цих оригінальних форм заміни регулярних виразів Notepad використовувалися в програмах Unix в Bell Labs в 1970-х роках, включаючи vi, lex, sed, AWK і expr, а також в інших утиліт, таких як Emacs. Згодом ці форми були прийняті широким колом програм, причому вони були в стандарті POSIX.2 у 1992 році.
У 1980-ті роки більш складні регулярні вирази виникли в Perl, який спочатку було отримано з бібліотеки регулярних виразів, написаної Генрі Спенсером (1986). Пізніше він написав реалізацію розширених регулярних виразів для Tcl. Бібліотека Tcl являє собою гібридну реалізацію NFA/DFA з поліпшеними характеристиками продуктивності.
Програмні проекти, які використовували реалізацію регулярного виразу Spencer Tcl, включають PostgreSQL. Perl пізніше розширився до вихідної бібліотеки Spencer, щоб додати багато нових функцій, але ще не реалізував розширені регулярні виразів Spencer з точки зору продуктивності або обробки Unicode. Частина зусиль у розробці Perl 6 полягає в поліпшенні інтеграції регулярних виразів і збільшення їх можливостей, що дозволяють визначати розбір граматичних виразів.
Результатом цього є міні-мову, званий правилами Perl 6, які використовуються для визначення граматики, а також надають інструмент для програмістів на цій мові. Ці правила підтримують існуючі функції регулярних виразів.Сучасний етап розвитку
Використання регулярних виразів Notepad у пошуку та в стандартах структурованої інформації для моделювання документів і баз даних почалося в 1960-х роках і поширився в 1980-х, коли консолідувалися галузеві стандарти, такі як ISO SGML. Ядро стандартів мови специфікації структури складається з регулярних виразів. З 1997 року Philip Hazel розробив PCRE (Perl Compatible Regular Expressions), який намагається точно імітувати функціональність регулярного виразу Perl і використовується багатьма сучасними інструментами, включаючи PHP та Apache HTTP Server.Область застосування і використання
Сьогодні регулярні вирази широко підтримуються в мовах програмування, програми обробки тексту, розширених текстових редакторах та деяких інших програмах. Підтримка регулярних виразів є частиною стандартної бібліотеки багатьох мов програмування, включаючи Java і Python, і вбудована в синтаксис інших, включаючи Perl і ECMAScript.
Реалізацію регулярних виразів часто називають механізмом регулярних виразів, а для повторного використання доступно кілька бібліотек.
Категория: Техника