Utilisation des modificateurs de Regex compatible avec Perl (PCRE) dans grep

Selon grep --help et man grep , nous pouvons utiliser l'option -P pour interpréter le pattern comme une expression régulière Perl (PCRE, pour être précis), au lieu des expressions régulières de base POSIX (BRE).

En langage Perl, différents modificateurs peuvent être ajoutés à l'expression afin d'ajuster l'interprétation du motif (dans la syntaxe de /pattern/modifiers ).

Alors, comment quelqu'un peut-il append des modificateurs à l'expression régulière Perl de grep? J'ai essayé quelques variantes comme grep -P "/^got.it$/ms" [FILE] mais les résultats de la search étaient faux.

Cependant, à propos de l'interprétation PCRE, le manuel indique que:

Ceci est très expérimental et grep -P peut avertir des fonctionnalités non implémentées.

Est-il possible que l'outil grep ne supporte pas les modificateurs ?

Par ailleurs, j'ai remarqué que l'on peut effectuer la correspondance de motifs insensible à la casse en utilisant l'option -i , qui est un exemple de modificateur.

Les PCRE ne sont pas littéralement perl; ils utilisent une bibliothèque C autonome, libpcre. Parfois, le "style PCRE" est utilisé pour désigner, par exemple, d'autres langages qui implémentent des expressions rationnelles utilisant les mêmes motifs / similaires, même s'ils ne reposent pas sur libpcre (note grep utilise le libpcre réel).

Ssortingctement parlant, une expression régulière n'inclut pas vraiment les modificateurs, 1 c'est juste un model. Certaines interfaces regexp (comme perl) permettent l'utilisation de modificateurs avec les templates; grep ne le fait pas.

Il y a aussi quelques différences en termes de sémantique des motifs. Encore une fois, gardez à l'esprit que ce n'est pas vraiment perl, c'est quelque chose qui en dépend.


1. À less qu'ils soient réellement à l'intérieur du model , que vous pouvez faire avec grep . Par exemple grep -P "(?i)foobar" sera une correspondance insensible à la casse.