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