2011-02-04 13 views
5

मैं फ़ॉर्म \^c में नियंत्रण कक्ष से मिलान करने की कोशिश कर रहा हूं जहां सी नियंत्रण वर्णों के लिए कोई मान्य वर्ण है। मेरे पास यह नियमित अभिव्यक्ति है, लेकिन यह वर्तमान में काम नहीं कर रहा है: \\[^][@-z]नियंत्रण वर्णों के लिए नियमित अभिव्यक्ति क्या है?

मुझे लगता है कि समस्या इस तथ्य के साथ निहित है कि देखभाल चरित्र (^) नियमित अभिव्यक्ति पार्सिंग इंजन का हिस्सा है।

+0

यह मुझे समझ में नहीं आता है। क्या वहां कोई बैकस्लैश है? क्या ये वास्तविक नियंत्रण वर्ण हैं, या कुछ ASCII अनुक्रम इसका अर्थ है? \ C @ .. \ cZ क्यों जाएं? अन्य हैं, आप जानते हैं। – tchrist

+0

वैसे भी आप एक चरित्र वर्ग में देखभाल क्यों कर रहे हैं? –

+0

मैं नियंत्रण वर्णों के लिए शाब्दिक पाठ से मिलान करने की कोशिश कर रहा हूं, न कि नियंत्रण वर्ण स्वयं। –

उत्तर

7

पैटर्न का उपयोग करके ^X फॉर्म की ASCII टेक्स्ट स्ट्रिंग से मेल करें, और कुछ भी नहीं। \\\^. पैटर्न के साथ फॉर्म \^X के ASCII टेक्स्ट स्ट्रिंग से मिलान करें। आप उस डॉट को [[email protected]_\[\]^\\] पर रोकना चाहेंगे, इसलिए \\\^[[email protected]_\[\]^\\]। ब्रैकेटेड कैरेक्टर क्लास के लिए [?\x40-\x5F] के रूप में पढ़ना आसान है, इसलिए \\\^[?\x40-\x5F] एक शाब्दिक बैकक्लाश के लिए, उसके बाद एक शाब्दिक सर्कफ्लैक्स के बाद, कुछ ऐसा होता है जो वैध नियंत्रण वर्णों में से एक में बदल जाता है।

ध्यान दें कि यह पैटर्न को मुद्रित करने का परिणाम है, या आप फ़ाइल से क्या पढ़ेंगे। रेगेक्स कंपाइलर को पास करने की आवश्यकता है। यदि आपके पास स्ट्रिंग अक्षर के रूप में है, तो आपको निश्चित रूप से उन बैकस्लाशों में से प्रत्येक को दोगुना करना होगा। `\\\\\\^[?\\x40-\\x5F]" हां, यह पागल दिख रहा है, लेकिन ऐसा इसलिए है क्योंकि जावा सीधे ग्रोवी और स्कैला - या पर्ल और रुबी - डू के रूप में रेगेक्स का समर्थन नहीं करता है। Regex काम अतिरिक्त bbaacckksslllllaasshheesssssess के बिना हमेशा आसान है। :)

आप उनमें से अप्रत्यक्ष अभ्यावेदन के बजाय वास्तविक नियंत्रण वर्ण था, तो आप संपत्ति जीसी = अन्य, या बस जीसी = नियंत्रण के लिए \p{Cc} के साथ सभी शाब्दिक कोड अंक के लिए \pC का प्रयोग करेंगे।

+0

मुझे पूरा यकीन नहीं है कि मैं \ पीसी समझता हूं। मैं जेएलएक्स का उपयोग करके एक व्याख्यात्मक विश्लेषक लिख रहा हूं और मुझे एक स्ट्रिंग में वैध नियंत्रण चरित्र अनुक्रमों को पहचानने और उन्हें अपने ASCII समकक्षों में अनुवाद करने की आवश्यकता है। उदाहरण के लिए, स्ट्रिंग "\^g" घंटी वर्ण मुद्रित करेगी या कंप्यूटर स्पीकर को बीप का कारण बन जाएगी। मुझे "\^g" जैसे नियंत्रण चरित्र अनुक्रमों से मेल खाने के लिए नियमित अभिव्यक्ति की आवश्यकता है। –

+0

@pcman: क्या आपके पास एक शाब्दिक बैकक्लाश है जिसके बाद एक शाब्दिक सर्कफ्लैक्स है जिसके बाद एक चरित्र है ['ए-जेड @? \ [\] _ ^] '? – tchrist

+0

हां, मैं शाब्दिक पाठ से मिलान करने की कोशिश कर रहा हूं क्योंकि यह एक स्ट्रिंग में दिखाई देगा। –

2

इसे देखें: http://www.regular-expressions.info/characters.html। आपको नियंत्रण वर्ण खोजने के लिए \ cA \ cZ का उपयोग करने में सक्षम होना चाहिए ..

+1

DELETE (U + 7F) के लिए '\ c?' के बारे में क्या? क्या आप जानते थे कि जावा सोचता है '\ c {'है';' और वह '\ c;' '' '' '' है? वे यह जांचना भूल गए कि परिणाम '\ p {सीसी}' है। ऊप्स! – tchrist

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