2009-09-14 8 views
15

क्या यह है? यदि हां, तो मैं इसके लिए प्रलेखन कहां प्राप्त कर सकता हूं ... यदि नहीं, तो सबसे अच्छा विकल्प कौन सा होगा?क्या सी या सी ++ में मानक रेगेक्स लाइब्रेरी है?

+0

पास-डुप्लीकेट: http://stackoverflow.com/questions/181624, http://stackoverflow.com/questions/923500 और http://stackoverflow.com/questions/815429। –

+1

http://stackoverflow.com/questions/329517/there-is-a-function-to-use-pattern-matching-using-regular-expressions-in-c – dmckee

+1

बीटीडब्ल्यू: आपके पास जानकारी का भरपूर धन हो सकता था और खोज करके आसान: http://stackoverflow.com/search?q=c+c%2B%2B+regex+ मानक – dmckee

उत्तर

31

सी ++ 11 में अंततः standard regex library - std :: regex है।

यदि आपके पास सी ++ 11 कार्यान्वयन तक पहुंच नहीं है, तो एक अच्छा विकल्प boost regex हो सकता है। यह std :: regex (उदा। the "empty()" method is not in the std::regex) के बराबर समतुल्य नहीं है, लेकिन यह सी ++ के लिए बहुत परिपक्व रेगेक्स कार्यान्वयन कम नहीं है।

+0

यह उत्तर दिनांकित है, 2012 तक उत्तर अब है हाँ, सी ++ में मानक रेगेक्स लाइब्रेरी है, हेडर "रेगेक्स" –

+0

@Clairvoire के तहत सी ++ 11 द्वारा अनिवार्य - मैंने 200 9 के अंत से परिवर्तनों के जवाब को संपादित/अपडेट करने का निर्णय लिया है, इस पुरानी उत्तर पर हेड-अप के लिए धन्यवाद। –

+0

अंतर यह भी है कि सी ++ मानक नामित उपसमूहों का समर्थन नहीं करता है, जो नियमित अभिव्यक्तियों के हिस्सों का नामकरण कर रहा है ताकि बाद में आप उन्हें नाम से प्राप्त कर सकें। – user3111311

5

boost regex लाइब्रेरी की जांच करें। यह सी ++ 0x के साथ मानक का हिस्सा बनना चाहिए।

7

यूनिक्स जैसी प्रणालियों के तहत आप POSIX regex functions का उपयोग कर सकते हैं।

3

यदि मानक से आपका मतलब कंपाइलर के साथ बंडल किया गया है, तो नहीं। लेकिन रीजिक्स एक्सटेंशन को बंडल करने वाली अन्य भाषाओं में से अधिकांश मानक c कार्यान्वयन का उपयोग करते हैं। जैसे PCRE - Perl Compatible Regular Expression और सी पुस्तकालयों में POSIX regex समर्थन है (man page देखें)।

6

माइक्रोसॉफ्ट विजुअल सी ++ 2008 फीचर पैक 1 (अब विजुअल स्टूडियो 2008 सर्विस पैक 1 में घुमाया गया) में 'आधिकारिक' टीआर 1 रेग पूर्व प्रकार के कार्यान्वयन शामिल हैं। अपने आप को नकारें :-)

2

नियमित अभिव्यक्तियां सी ++ एक्सटेंशन TR1 का हिस्सा हैं। डंकमवेयर, विजुअल स्टूडियो और अन्य ने पहले से ही इसे कार्यान्वित किया है। देखें

Quick Start for C++ TR1 Regular Expressions

Visual C++ 2008 Feature Pack

1

Qt, Trolltech से, यह भी एक regex कार्यान्वयन जो मैं उपयोग करने के लिए बहुत आसान लगता है है। हालांकि, अगर आप किसी और चीज के लिए क्यूटी का उपयोग करने की योजना नहीं बना रहे हैं तो मैं बूस्ट.रेगेक्स का उपयोग करूंगा क्योंकि आप शायद अन्य प्रयोजनों के लिए बूस्ट का उपयोग करके भी अच्छे होंगे।

1

मानक आईएसओ/आईईसी 14882: 2011 प्रोग्रामिंग भाषा सी ++ सी ++ पुस्तकालय के हिस्से के रूप में एक रेगेक्स वर्ग का वर्णन करता है, जो परिपक्व बूस्ट लाइब्रेरी से काफी प्रभावित है।

उत्सुकता से, जनवरी 2013 तक, इस मानक के साथ कंपाइलर्स का अनुपालन अभी भी स्पॉटी है, उदा। जीएनयू कंपाइलर सूट का लोकप्रिय सी ++ कंपाइलर मानक के इस हिस्से का समर्थन/अनुपालन नहीं करता है।

इसी कारण से, इस बिंदु पर बूस्ट का उपयोग करना सबसे अच्छा है जब तक कि संकलक समर्थन अनुपालन तक नहीं पहुंच जाता।