2013-02-28 9 views
27

This answerは、(?:pattern)の構文をサポートしていますが、私にとってはうまくいかないようです(グループは引き続きキャプチャされ、一致の一部として表示されます)。何か不足していますか?grepで非キャプチャグループを使用するには?

私はthis codegrep -oP "(?:syntaxHighlighterConfig\.)[a-zA-Z]+Color" SyntaxHighlighter.jsをしよう、との結果がであることを期待しています:

wikilinkColor 
externalLinkColor 
parameterColor 
... 

ではなく、私が手:

syntaxHighlighterConfig.wikilinkColor 
syntaxHighlighterConfig.externalLinkColor 
syntaxHighlighterConfig.parameterColor 
... 
+0

あなたには、いくつかのsampel入力/出力を表示することができますか? –

+1

@putnick質問を編集して詳細を追加しました。 – waldyrious

+0

あなたはあなたが期待するものや何を得るかを示す前に、あなたがグロッピングしているファイルの内容を含めておくべきです – barlop

答えて

44

は "非キャプチャする" というグループのISNを意味するものではありません試合の一部。グループの値は、バックリファレンスでの使用のために保存されていないことを意味します。あなたが探していることはルックの背後にゼロ幅アサーションです:

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

すべてのlookbehindsはゼロ幅です。 – barlop

+5

Lookbehindsは固定長である必要があります。この場合、それは助けになりますが、他の人にはありません。 – Cromax

+3

'(?<= ...)'は**正のlookbehindアサーション**、 '(?<!...)'は**負のlookbehindアサーション**、 '(?= ...)'は**正の先読みですアサーション**、 '(?!...)は**否定先読みアサーション**です。 [詳細はこちら](http://www.regular-expressions.info/lookaround.html) – Rockallite

関連する問題