2017-11-17 31 views
5

मैं इस regex की है। इस छद्म कोड सीएसएस इनपुट पर विचार करें:RegEx चरित्र से शुरू होने पर मेल नहीं खाता है?</p> <p><code>/(((w+)|(.w+)|(#w+)|*)([(.+(=".+"|*".+"|^".+"|))])?(::|:)?)+(?=[ S]*{)/gm</code></p> <p>कौन सा मैं CSS चयनकर्ताओं का मिलान करने के लिए उपयोग करने के लिए कोशिश कर रहा हूँ:

.main { 
    property: value; 
} 

.one, .two a[href$=".com"] { 
    .subclass { 
    property: value; 
    } 
} 

.test:before, .test:after:active {} 

पैटर्न ऊपर निम्नलिखित मैचों वापस आ जाएगी:

['.body', '.one', '.two', 'a[href$=".com"]', '.subclass', '.test:before', '.test:after:active'] 

मैं इतना है कि छद्म चयनकर्ताओं मेल नहीं खाते हैं पैटर्न को संशोधित करने की कोशिश कर रहा हूँ। तो अन्य सभी मैचों को अभी भी वैध होना चाहिए, लेकिन .test:before केवल .test और .test:after:active होना चाहिए, बस .test से मेल खाना चाहिए। मैं इसे नकारात्मक नज़र के पीछे ऐसा करने का कोई तरीका नहीं सोच सकता, या अगर पहला अक्षर : है तो मिलान करने का कोई तरीका नहीं है।

मैं इसे नोड में कार्यान्वित कर रहा हूं, और मैं अपने स्क्रिप्ट में नकारात्मक लुक-बैक का उपयोग करने के लिए अपनी स्क्रिप्ट को नोड> 9.2.0 पर लॉक नहीं करना चाहता हूं।

किसी भी विचार की सराहना की जाएगी!

+0

क्या सिर्फ का उपयोग कर '(\। \ W +)' के साथ गलत क्या है? – CAustin

+0

@CAustin जो केवल वर्ग चयनकर्ताओं से मेल खाता है। कई अन्य छद्म-चयनकर्ता पैटर्न हैं जिनके लिए जिम्मेदार होना चाहिए। –

+0

क्या आप एक अद्यतन इनपुट उदाहरण प्रदान कर सकते हैं जिसमें अन्य चीजें शामिल हैं जिन्हें आप मिलान करने का प्रयास कर रहे हैं? – CAustin

उत्तर

1

(?!.*:)(?:[.#]\w+|\w+\[.*\])

आप कुछ इस तरह इस्तेमाल कर सकते हैं?

यह एक नकारात्मक लुकहेड का उपयोग करता है यह सुनिश्चित करने के लिए कि यह इसके बगल में एक कोलन के साथ कुछ भी कैप्चर नहीं करता है, साथ ही psuedo css तत्वों के लिए आपके matcher के सरलीकृत संस्करण का उपयोग करता है।

See it working here

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

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