2010-04-07 7 views
6

Plus précisément, j'utilise la commande Linux:Quelle est la saveur POSIX de regex utilisée par Perl?

$ find . -regextype posix-extended -regex '<some regex>' ...

Je veux juste vous assurer que le type POSIX J'utilise est le type Perl utilise, puisque c'est de loin celui que je suis plus familier .

+1

Perl a défini de nombreuses extensions de l'expression rationnelle POSIX (c'est-à-dire qu'il n'est pas du tout POSIX). Je ne pense pas qu'il y ait un équivalent POSIX. Quelles fonctionnalités spécifiques à regex souhaitez-vous utiliser? – Cameron

+1

La différence ici est la syntaxe de \ {et \\) etc. Les posix étendus sont ceux dont vous avez besoin. –

+0

C'est comme demander quel type de moto est un Hummer. Ce sont des choses vraiment différentes, bien qu'elles remplissent des fonctions similaires. – jpaugh

Répondre

1

Les expressions rationnelles de Perl sont plus proches des extensions Posix. expressions régulières de base POSIX utilisent ( et { pour correspondre aux personnages réels, et \( et \{ comme des caractères spéciaux, mais les étendues Posix utilisent ( et { pour la même signification que dans Perl et \( ou \{ pour faire correspondre les caractères réels, le même comme Perl. Posix-extended est ce que vous voulez.

8

Le moteur d'expressions régulières de Perl est le moteur d'expressions régulières de Perl. perl définit Perl.

Pour plus de détails, voir perldoc perlreref.

5

Perl utilise des expressions régulières Perl, pas POSIX. Vous pouvez comparer les syntaxes vous-même, par exemple dans regex(7).

9

Perl a défini sa propre norme pour les regex. Par exemple, il existe des systèmes tels que PCRE, qui signifie Perl Compatible Regular Expressions.

+4

Ou Perl-Regular Expression, n'est-ce pas? – Cameron

+3

+1, mais notez que PCRE n'est pas complètement compatible Perl. –

+2

* Le nom est trompeur, car PCRE est compatible Perl uniquement si vous considérez un sous-ensemble des paramètres de PCRE et un sous-ensemble des fonctions d'expression régulières de Perl. * Http://en.wikipedia.org/wiki/PCRE –

4

Par perldoc perlhist, Perl 0 ("Classifié, ne pas demander.") A utilisé des expressions régulières de base. Toutes les versions depuis, en commençant par Perl 1.000 en décembre 1987, ont utilisé des expressions régulières étendues (et étendues sur celles-ci ...).

Questions connexes