web-dev-qa-db-fra.com

Comment utiliser les groupes non capturants dans grep?

Cette réponse suggère que grep -P Prend en charge la syntaxe (?:pattern), Mais cela ne semble pas fonctionner pour moi (le groupe est toujours capturé et affiché dans le cadre de la correspondance ). Suis-je en train de manquer quelque chose?

J'essaie grep -oP "(?:syntaxHighlighterConfig\.)[a-zA-Z]+Color" SyntaxHighlighter.js sur ce code , et je m'attends à ce que les résultats soient:

wikilinkColor
externalLinkColor
parameterColor
...

mais à la place je reçois:

syntaxHighlighterConfig.wikilinkColor
syntaxHighlighterConfig.externalLinkColor
syntaxHighlighterConfig.parameterColor
...
44
waldyrious

"Non-capture" ne signifie pas que le groupe ne fait pas partie du match; cela signifie que la valeur du groupe n'est pas enregistrée pour être utilisée dans les références arrières. Ce que vous recherchez est une assertion de largeur nulle :

grep -Po "(?<=syntaxHighlighterConfig\.)[a-zA-Z]+Color" file
62
Kent