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

Tôi muốn ở trên để in thử nghiệm và khớp với kiểm tra từ trong chuỗi nhưng dường như không làm điều đó. Có ai có thể làm sáng tỏ một chút ở đây không? Sử dụng QT.Cụm từ thông dụng C++ Qt

+0

Khi làm việc với các biểu thức chính quy trong Qt, chương trình ví dụ RegExp (nằm trong $ YOUR_QT_DIR \ examples \ tools \ regexp \ release) cực kỳ hữu ích. Nó cho phép bạn nhập các biểu thức chính quy và kiểm tra kết quả mà không cần biên dịch lại. Tài liệu [ở đây] (http://doc.qt.nokia.com/latest/tools-regexp.html) – docsteer

+0

Cảm ơn @docsteer, ví dụ này thực sự hữu ích khi thiết kế regexp của chúng tôi. Trong Qt5.2.1, nó nằm ở đây: $ QT_DIR/example/widgets/tools/regexp/release – toussa

Trả lời

9

Bạn không có bất kỳ dấu ngoặc chụp trong regex của bạn vì vậy không có nhóm chụp 1. Hãy thử điều này thay vì:

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

... hoặc sử dụng 'rx.cap (0)' để truy cập toàn bộ kết quả khớp. –

1

Thay rx.cap(1) với rx.cap(0) Toàn bộ trận đấu có chỉ số 0.

Các vấn đề liên quan