2013-02-05 14 views
6

मैं उसके घटक भागों में सीएसएस से एक सीमा विशेषता विभाजित करना चाहते हैं अर्थात्:Regex के लिए बंटवारे सीएसएस सीमा अपने हिस्से में विशेषता

.someClass{ 
    border: 1px solid black; 
} 

में

border-width: 1px 
border-style: solid; 
border-color: black; 

मैं सीमा अलग हो गई है और इससे पहले अर्ध-कॉलन, इसलिए मुझे विशेषता

अब सीएसएस में आपके ऊपर मौजूद 3 उपरोक्त विशेषताओं का कोई संयोजन हो सकता है ताकि

border: 1px solid; 
border: solid Gold; 
border: 1em; 
border: 1mm #000000; 
border: 1px inset rgb(12, 44, 199); 

सभी कानूनी हैं इसलिए मुझे इसके लिए खाते की आवश्यकता है।

मैं क्या है अब तक

([0-9]+[a-zA-Z|%]+)* *([a-zA-Z]*) *(.*) 

कौन सा सामान्य मामले के लिए ठीक काम करता है, लेकिन "1px ठोस" मामले पर विफल रहता है ठोस रूप में 3 पर कब्जा समूह, नहीं 2 में डाल दिया जाता है। मैं रेगेक्स विशेषज्ञ नहीं हूं इसलिए मैं बहुत ही बुनियादी गलतियां कर रहा हूं, लेकिन किसी भी मदद की सराहना की जाएगी। मैं के साथ सी # काम कर रहा हूँ (लेकिन मुख्य रूप से http://gskinner.com/RegExr/ इसलिए किसी भी मतभेद में समस्या का परीक्षण किया गया है हो सकता है)

उत्तर

1
सीधे शब्दों में border: अभिव्यक्ति के शुरू में सहित

एक प्रमुख मदद के बाद से यह गलती से दूसरे से मेल नहीं खाएगी हो रहा है या तीसरा समूह। इसी तरह, अभिव्यक्ति के अंत में ; जोड़ना बहुत जल्दी या दूसरे या तीसरे समूह के कैप्चर को रोकता है। इसके अलावा, * से + से दूसरे समूह को बदलने में भी मदद मिलती है क्योंकि इससे दूसरे समूह के मुकाबले दूसरे समूह से मिलान करने की अनुमति मिलती है। कुल मिलाकर, इस प्रयास करें:

border: ([0-9]+[a-zA-Z|%]+)* *([a-zA-Z]+)* *(.*)*; 

मुझे शक है कि इस एकदम सही है और यदि आप 100% काम करने के लिए परिणामों की जरूरत है, तो आप शायद एक भी नियमित अभिव्यक्ति का उपयोग करना चाहिए नहीं लेकिन इसके बजाय tokenize और स्ट्रिंग पार्स (मैं अत्यधिक सीएसएस नियम शक पूरी तरह से regex के साथ पार्स कर रहे हैं), लेकिन अगर यह सीमित नियमों के लिए काम करता है तो आपको इसके लिए महान आवश्यकता है।

+0

धन्यवाद, ऐसा लगता है कि यह मेरे लिए ठीक काम करता है और मेरे लिए पर्याप्त सटीक परिणाम प्राप्त करता है। – Nymain