2011-08-02 28 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; 

Yukarıdaki testin çıktısını almak istedim ve kelime testini dizgeyle eşleştirdim, ancak bunu yapmıyor gibi görünüyor. Burada biraz ışık tutabilir mi? QT kullanarak. Hiçbir yakalama grubu 1. Bu yolu deneyin yoktur bu yüzdenDüzenli İfadeler C++ Qt

+0

zaman Qt'deki normal ifadelerle çalışan RegExp örnek programı ($ YOUR_QT_DIR \ samples \ tools \ regexp \ release içinde bulunur) inanılmaz derecede faydalıdır. Düzenli ifadeler girmenizi ve sonuçları yeniden derlemeden test etmenizi sağlar. Belgeler [here] (http://doc.qt.nokia.com/latest/tools-regexp.html) – docsteer

+0

Teşekkürler @docsteer, örnek bizim regexp tasarlarken gerçekten yararlıdır. Qt5.2.1'de, burada bulunur: $ QT_DIR/example/widgets/tools/regexp/release – toussa

cevap

9

Eğer regex herhangi yakalama parens yok:

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

... veya tüm rumuza erişmek için 'rx.cap (0)' kullanın. –

1

rx.cap(0) bütün maç ile rx.cap(1) değiştirin endeksi vardır 0.

İlgili konular