Регулярные выражения Notepad: описание, замена и примеры
Регулярное выражение Notepad - это теория формального языка, последовательность символов, определяющих шаблон поиска. Обычно этот шаблон затем используется строковыми алгоритмами поиска для операций «найти» или «найти и заменить» в строках. Но давайте разберемся со всем по порядку и рассмотрим эту тему более подробно.
Описание принципа работы регулярных выражений
Концепция возникла в 1950-х годах, когда американский математик Стивен Коул Клини формализовал описание обычного языка. Эта концепция широко использовалась с утилитами обработки текста Unix. С 1980-х годов существуют различные синтаксисы для написания регулярных выражений, один из которых является стандартом POSIX, а другой, широко используемый, является синтаксисом Perl.
Как удалить пустые строки в регулярных выражениях 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.