Похоже, что больше распространенных языков фактически используют свою собственную реализацию "Perl-подобных" регулярных выражений, чем фактически использует libpcre. Языки, попадающие в этот класс, включают (как минимум) Java, JavaScript и Python.
Библиотека Java java.util.regex
использует синтаксис, который очень сильно основан на регулярных выражениях Perl (около версии 5.8), включая правила экранирования, классы Unicode \p
и \P
, нежадные и "притяжательные" квантификаторы обратные ссылки, цитирование \Q
.. \E
и несколько конструкций (?...)
, включая группы без захвата, группы просмотра вперед / назад нулевой ширины и группы без возврата. На самом деле, регулярные выражения Java имеют больше общего с регулярными выражениями Perl, чем libpcre. :)
Язык JavaScript также использует регулярные выражения, полученные из Perl; Классы Unicode, lookbehind, собственнические квантификаторы и группы без возврата отслеживания отсутствуют, но остальная часть того, что я упомянул для Java, также присутствует в JS.
Синтаксис регулярных выражений Python также основан на Perl 5, с ненадежными квантификаторами, большинством конструкций (?...)
, включая не захватывающие группы, упреждающие / задние и условные шаблоны, а также именованные группы захвата (но с другой синтаксис, чем Perl или PCRE). Группы без возврата и «притяжательные» квантификаторы отсутствуют (насколько я вижу), как и \p
и \P
классы символов Unicode, хотя стандартные классы \d
, \s
и \w
Поддержка юникода, если требуется.