2013-02-28 5 views
27

This answer सुझाव देता है कि grep -P(?:pattern) वाक्यविन्यास का समर्थन करता है, लेकिन यह मेरे लिए काम नहीं करता है (समूह अभी भी कब्जा कर लिया गया है और मैच के हिस्से के रूप में प्रदर्शित किया गया है)। क्या मैं कुछ भूल रहा हूँ?grep में गैर-कैप्चरिंग समूहों का उपयोग कैसे करें?

मैं this code पर grep -oP "(?:syntaxHighlighterConfig\.)[a-zA-Z]+Color" SyntaxHighlighter.js कोशिश कर रहा हूँ, और उम्मीद परिणाम होने के लिए:

wikilinkColor 
externalLinkColor 
parameterColor 
... 

लेकिन इसके बजाय मैं:

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

आप कुछ sampel इनपुट/आउटपुट दिखा सकते हैं: क्या आप देख रहे हैं एक लुक-पीछे शून्य चौड़ाई अभिकथन है? –

+1

@sputnick मैंने अधिक विवरण जोड़ने के लिए प्रश्न संपादित किया। – waldyrious

+0

आपको उस फ़ाइल की सामग्री शामिल करनी चाहिए जिसमें आप उम्मीद कर रहे हैं कि आप क्या उम्मीद करते हैं या आपको – barlop

उत्तर

44

"गैर-कैप्चरिंग" मतलब यह नहीं है कि समूह प्रतिसाद नहीं मैच का हिस्सा नहीं है; इसका मतलब है कि समूह का मान बैक-रेफरेंस में उपयोग के लिए सहेजा नहीं गया है।

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

क्या मिलता है, यह ध्यान दें कि सभी दिखने वाले शून्य चौड़ाई – barlop

+5

लुकबेइंड्स को निश्चित लंबाई की आवश्यकता है। इस मामले में यह मदद करता है, लेकिन यह दूसरों में नहीं है। – Cromax

+3

संदर्भों के लिए, '(? <= ...)' ** सकारात्मक दिखने वाला दावा ** है, '(? Rockallite

संबंधित मुद्दे