2011-08-02 11 views
7
QRegExp rx("\\btest\\b"); 
rx.indexIn("this is a test string"); 
QString captured = rx.cap(1); 
std::string capturedstr = captured.toUtf8().constData(); 
std::cout << capturedstr; 

मैं उपर्युक्त परीक्षण को मुद्रित करना चाहता था और स्ट्रिंग के भीतर शब्द परीक्षण से मेल खाता था लेकिन ऐसा लगता है कि ऐसा नहीं लगता है। क्या कोई यहां कुछ प्रकाश डाल सकता है? क्यूटी का उपयोग करनानियमित अभिव्यक्तियां सी ++ क्यूटी

+0

जब क्यूटी में नियमित अभिव्यक्तियों के साथ काम करते हुए, RegExp उदाहरण प्रोग्राम ($ YOUR_QT_DIR \ example \ tools \ regexp \ release में स्थित) अविश्वसनीय रूप से सहायक है। यह आपको नियमित अभिव्यक्तियों में प्रवेश करने और बिना किसी संकलन के परिणामों का परीक्षण करने की अनुमति देता है। दस्तावेज़ीकरण [यहां] (http://doc.qt.nokia.com/latest/tools-regexp.html) – docsteer

+0

धन्यवाद @ डॉकस्टर, उदाहरण हमारे regexp को डिज़ाइन करते समय वास्तव में सहायक होता है। Qt5.2.1 में, यह यहां स्थित है: $ QT_DIR/उदाहरण/विजेट/उपकरण/regexp/रिलीज – toussa

उत्तर

9

तुम इतनी कोई कैप्चर समूह 1. इस बजाय प्रयास करें अपने regex में किसी भी कब्जा कोष्ठक नहीं है:

QRegExp rx("\\b(test)\\b"); 
+3

... या पूरे मैच तक पहुंचने के लिए 'rx.cap (0)' का उपयोग करें। –

1

rx.cap(0) पूरे मैच के साथ बदलें rx.cap(1) है सूचकांक 0.

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