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

Yo quería que la prueba de arriba para imprimir y coincidir con la prueba de palabra dentro de la cadena, pero no parece estar haciendo eso. ¿Alguien podría arrojar algo de luz aquí? Usando QT.Expresiones regulares C++ Qt

+0

Cuando Al trabajar con expresiones regulares en Qt, el programa de ejemplo RegExp (ubicado en $ YOUR_QT_DIR \ examples \ tools \ regexp \ release) es increíblemente útil. Le permite ingresar expresiones regulares y probar los resultados sin recompilar. Documentación [aquí] (http://doc.qt.nokia.com/latest/tools-regexp.html) – docsteer

+0

Gracias @docsteer, el ejemplo es realmente útil al diseñar nuestra expresión regular. En Qt5.2.1, se encuentra aquí: $ QT_DIR/examples/widgets/tools/regexp/release – toussa

Respuesta

9

usted no tiene ningún parens captura en su expresión regular por lo que no hay un grupo de captura 1. Prueba este lugar:

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

... o usa 'rx.cap (0)' para acceder a la coincidencia completa. –

1

Reemplazar rx.cap(1) con rx.cap(0) todo el partido tiene índice 0.

Cuestiones relacionadas