таблица сравнения для регулярных выражений, совместимых с регулярными выражениями emacs и rel (PCRE)? - PullRequest
20 голосов
/ 22 декабря 2009

Есть ли в Интернете хорошая таблица или таблица, в которой сравниваются синтаксис emacs regex и PCRE?

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

Ответы [ 3 ]

23 голосов
/ 28 декабря 2009

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

Когда убежать () {} |

В регулярных выражениях Emacs, (,), {,}, | являются буквальными и экранированными (\ (, \), \ {, \}, \ |) - мета.

В Perl-совместимом регулярном выражении, (,), {,}, | мета, а экранированные буквальны.

* и +

\ * - буквальная звезда в Emacs и Perl. Если выражение начинается со звезды, начальная звезда буквально в регулярном выражении Emacs, недопустимо в регулярном выражении Perl.

Аналогично для плюса.

Классы персонажей

Классы символов \d (для цифр), \w (для слов), \s (для пробельных символов) не работают в регулярных выражениях Emacs, но работают в Perl. В Emacs используйте [[:digit:]], [[:word:]], [[:space:]] вместо (с двойными скобками). В Perl они также [:digit:], [:word:], [:space:] (одинарные скобки).

\w в Emacs соответствует ' и ", в отличие от Perl. Это связано с тем, что таблица синтаксиса текстового режима содержит ' и " в качестве символов слова.

Конструкции с обратной косой чертой

Из конструкций обратной косой черты, упомянутых в Emacs Regexp Backslash , следующие конструкции НЕ находятся в Perl-совместимых регулярных выражениях.

\` \' \= \< \> \_< \_> \sC \cC

См. Также , что \ <и> может сделать то, что \ b не может сделать

\A, \Z, \z НЕ в Emacs. В Emacs используйте вместо:

\` or \'

Осложнения, касающиеся перевода строк и интерактивного использования

См. Второй раздел в Соответствие текстового шаблона в Emacs . В нем также упоминается, почему \n и \t не соответствуют символам новой строки и табуляции в инкрементальном поиске для регулярного выражения (C-M-s или M-x isearch-forward-regexp) и что делать.

Etc

Регулярное выражение Emacswiki

4 голосов
/ 22 декабря 2009

Я думаю, вы ищете http://www.regular -expressions.info / refflavors.html

В этих таблицах регулярные выражения Emacs - "GNU ERE".

0 голосов
/ 22 декабря 2009

Разница только в (){}| символах, не так ли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...