[Статьи] вводит регулярное выражение --2019-08-16 11:20:46

Оригинал: http://blog.gqylpy.com/gqy/381

"     Регулярные выражения , также известные как регулярные выражения ( на английском языке: Регулярное выражение, как и Regex, регулярные выражения или RE коду часто сокращенной)., понятие в информатике регулярных выражений , как правило , используются для извлечения, замен тех , в соответствии с рисунком. текст (правила).

    Многие языки программирования поддерживают регулярные выражения для строковых операций. Например, в Perl он построен на мощном регулярных выражений. Концепция регулярных выражений была первоначально разработана Unix инструментальными программными средствами (например, СЕПГ и Grep ) популярности. Названные регулярные выражения, часто сокращенно «регулярное выражение», в единственном числе имеет регулярное выражение, регулярное выражение, сложные регулярные выражения, регулярные выражения, regexen.
***

концепция

    Регулярное выражением является строка логической операцией формулы, заключается в использовании некоторой комбинации заранее определенный специальных символов, и этот конкретный характера, образует «строку правило», это «правило строки» используется для выражения символов для логики строки фильтра.

Краткое введение

    Регулярное выражение представляет собой логическая формулу строк (включая обычные символы (например, буквы) и специальные символы между а до г (называемый «мета характера»)) операции, состоит в использовании предварительно определенный специфический характера и сочетание конкретных символов, состоящие из «правил строки», это «правило строки» используется для выражения фильтрующей логики строки. Регулярное выражение представляет собой текстовый режим, режим описывает, когда один или несколько из поиска строки текста, которые будут согласованы.

происхождения

    В начале исследования ученые на нервную систему человека работает регулярное выражение «возбудитель» или лицензировать весь путь обратно. Соединенные Штаты Америки Нью - Джерси «s Уоррен McCulloch родился в Детройте и Уолтер Pitts два Нейробиологи физиологические аспекты, разработан новый метод математического способа описания нейронной сети, они будут описаны нейроны в нервной системе , творчески стать небольшим и простым автоматическим элементом управления, для того , чтобы сделать большую работу реформ.

    В 1951 году человек по имени математической ученый Стивен Клини, который на основе Warren McCulloch и Walter Pitts начале работы над, опубликовал статью под названием «нейронные сети событие представления», использование обычного вызова набор математических символов для описания этой модели, ввел понятие регулярных выражений. Регулярные выражения используются для описания в качестве одного из ее выражений называется «регулярная алгебраические», и, таким образом, приняли «регулярное выражение» термин.

    Через какое - то время, было обнаружено , что результаты работы могут быть применены к другим аспектам. Кен Томпсон положить результаты применяются для расчета алгоритма поиска некоторые из более ранних исследований, Кен Томпсон является главным изобретателем Unix, Unix является отцом известного. Unix отец этого символизма , введенного в редактор QED, то редактор эд на Unix, и в конце концов ввел Grep. Джеффри Friedl в своей книге «Регулярные выражения (второе издание) » ( китайская версия переводится как: Mastering Regular Expressions, были к третьему изданию) , которая получила дальнейшее развитие в объяснении, если вы хотите узнать больше о теории регулярных выражений и история, рекомендуется прочитать эту книгу.

    С тех пор регулярные выражения широко применяются для различных UNIX или UNIX-подобных инструментов, таких , как хорошо известной большой Perl . Perl регулярных выражений , полученные из регулярных выражений написанных Генри Спенсер, после того , как эволюционировали в PCRE (Perl Compatible Regular Expressions Perl Compatible Regular Expressions), PCRE разработан Филипп Хейзел, библиотека используются многими современными инструментами. Первое практическое применение регулярных выражений в Unix КЭД является редактором.

    Тогда регулярное выражение большинства приложений и развития различных языков программирования или различные приложения, известный как эволюция вычислительной техники в лесе и красивый Бог-форме звука приятным жаворонок.

    Выше регулярное выражение, описывающее историю возникновения и развития в настоящее время регулярных выражений на основе текстового редактора и инструмента поиска на основе занимает очень важное место.

    В течение последних шести десятилетий, регулярное выражение постепенно изменяется от расплывчатых и эзотерических математических понятий, развитие во все виды компьютерных программ и пакетов приложений в главной функции. Не только многие инструменты UNIX поддерживают регулярные выражения, за последние два десятилетия, в рамках лагеря WINDOWS, регулярное применение идей и выражений поддержки и встроенных приложений в большинстве окон разработчиков комплекта! От регулярного выражения в Microsoft Visual Basic 6 или Microsoft VBScript для изучения и разработки .NET Framework, WINDOWS серия регулярных выражений поддержки развития беспрецедентной высоты, почти все разработчики Microsoft и все языки .NET могут использовать регулярные выражение. Если вы компьютер рабочий контакт с языком, то вы будете в основной операционной системы (* NIX [Linux, Unix и т.д.], Windows, HP, BeOS и т.д.), основной язык разработки (Delphi, Scala, PHP, C #, Java, C ++, Objective-C, Swift, VB, JavaScript, Ruby и Python и т.д.), все виды прикладного программного обеспечения в десятки миллионов долларов, вы можете видеть регулярные выражения изящный танец.

цель

Учитывая регулярное выражение и другую строку, мы можем достичь следующих целей:

  1. Являются ли данная строка соответствует регулярной выражению логики фильтрации (называемой как «соответствие»).
  2. Да, мы хотим, чтобы получить определенную часть из строки регулярного выражения.

особенность

Регулярные выражения характеризуются:

  1. Гибкость, логика и функциональность очень сильны.
  2. Вы можете быстро добраться до очень сложной строки управления символов, используя простой способ.
  3. Для людей, которые являются новыми, сравнительно малоизвестной.

Поскольку регулярные выражения являются основным объектом приложения является текст, так что в различных текстовых редакторов имеют приложения , как малые , как знаменитый редактор EditPlus, как большой , как Microsoft Word, Visual Studio и другой большой редактор, вы можете использовать регулярные выражения для обработки содержание текста.

двигатель

    Обычный двигатель можно разделить на две категории: одна является DFA, один является НКА. Оба двигателя имеет долгую историю (начиная с двадцати лет), что также было много вариантов этих двух двигателей! Таким образом, чтобы избежать дальнейшего внедрения POSIX ненужных вариантов. В результате, основной регулярный двигатель делится на три категории: во-первых, в DFA, второй традиционный НКА, третий POSIX НКА.

    DFA , когда двигатель находится в линейном состоянии к следующему, так как они не требуют возвратов (и , следовательно , они никогда не испытать такой же характер , дважды). DFA двигатель также обеспечивает максимально возможную строку соответствия. Однако, так как двигатель DFA содержит только ограниченное состояние, оно не может совпадать с опорным рисунком обратным, и , поскольку он не отображает расширенную конфигурацию, поэтому она не может захватить подвыражения.

    Традиционные двигатели NFA запустить так называемый «жадным» матч алгоритма с возвратами , чтобы указать порядок в тестовых регулярных выражениях для всех возможных расширений и принять первый матч. Поскольку конкретные расширения традиционной NFA построить регулярное выражение для достижения успешного матча, так что он может захватить задние ссылочные подвыражения и матч. Тем не менее, из - за обычным НКА назад, так что он может получить доступ к тому же состоянию многократно (которые поступают по различным путям , если состояние). Таким образом, в самом худшем случае, его скорость выполнения может быть очень медленной. Поскольку традиционный NFA принимает первый матч он находит. Таким образом , он может также привести к другим (возможно больше) соответствует нераскрытым.

    POSIX NFA двигатель похож на традиционный двигатель NFA, другая точка является: они могут гарантировать, что ранее обнаружили самый длинный возможный матч, они будут продолжать возвращаться. Поэтому POSIX NFA обороты двигателя происходит медленнее, чем традиционный двигатель НКИ, и при использовании POSIX НКИ, вы, вероятно, не будете готовы поддержать короткий поиск совпадения для того, чтобы изменить ситуацию вниз поиск, а не больше соответствовать поиску.

    Использование программы двигателя DFA в основном: AWK, задать расширенное, флекс, Лекси, MySQL, Procmail и так далее;

    Используйте традиционный NFA движок программы в основном: GNU Emacs, Java, ergp, меньше, более, .NET языков, библиотека PCRE, Perl, PHP, Python, Ruby, СЭД, VI;

    Использование POSIX NFA программа двигателя в основном: Мок, утилиты врезных Kern Systems', GNU Emacs (вы можете явно указать при использовании);

    Кроме того, использование DFA / НКА гибридного двигателя: GNU AWK, GNU Grep / задать расширенные, Tcl.

Простой пример иллюстрирует разницу между НКА и DFA работ:

    Например, строка это Янсен Дневник пользователя, регулярное выражение / я (MSEN | nsen | НСМОС) / (Не заботьтесь о том, как своего рода выражение, работа здесь только для иллюстрации разницы между двигателем). NFA работает следующим образом, в строке, чтобы найти у и после того матча, если продолжать искать ли последующего м, если нет, то соответствует ли последующий п (случай выбирается ветвь из MSEN) , После этого затем продолжать ли порядок S, E, с последующим тестированием ли п, п является успешным совпадением, то тест не является ли м. Почему м? Поскольку работа НКА регулярные выражения является стандартным, повторяется строка теста, так и та же строка, вероятно, будут повторно проверены много раз!

    DFA не так, DFA будет в свою очередь, ищет у т с начала этого перейдите к у, а затем известным, то увидеть, если есть выражение, есть только здесь. После того, как строка затем проверяется выражение последовательно равно п, DFA, этот случай не соответствует требованиям MSEN устранены. nsen НСМОС и отвечает требованиям, то DFA последовательно проверки строка символов обнаруживается при сеном в русской ветви только nsen встретились, матч успешно!

    Это можно увидеть два совершенно разных способа работы двигателя, а (NFA) привело к выражению, а (DFA) для ориентированных на текст! Вообще говоря, поиск DFA двигатель быстрее! Но NFA привела к выражению, но легче манипулировать, как правило , программисты предпочитают НКУ двигатель! Два вида двигателей имеют свои сильные стороны , но это действительно зависит от ваших базовых потребностей и языка , используемых! "


Оригинал: http://blog.gqylpy.com/gqy/381

рекомендация

отwww.cnblogs.com/bbb001/p/11362749.html