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

위의 내용은 테스트를 출력하고 문자열 내에서 test라는 단어와 일치하지만, 그렇게하지 않는 것 같습니다. 여기 누군가가 빛을 비춰 줄 수 있습니까? QT 사용. 더 캡처 그룹 1. 대신이 시도하지 그래서 거기에정규식 C++ Qt

+0

때 RegExp 예제 프로그램 ($ YOUR_QT_DIR \ examples \ tools \ regexp \ release에 있음)은 Qt에서 정규 표현식으로 작업하면 엄청난 도움이됩니다. 그것은 정규식을 입력하고 다시 컴파일하지 않고 결과를 테스트 할 수있게합니다. 문서 [here] (http://doc.qt.nokia.com/latest/tools-regexp.html) – docsteer

+0

@docsteer에게 감사드립니다.이 예제는 정규 표현식을 디자인 할 때 매우 유용합니다. Qt5.2.1에서는 $ QT_DIR/examples/widgets/tools/regexp/release – toussa

답변

9

당신은 당신의 정규식의 모든 캡처 괄호가없는 :

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

... 또는'rx.cap (0)'을 사용하여 전체 일치 항목에 액세스합니다. –

1

rx.cap(0) 전체 경기와 rx.cap(1) 교체 지수가 0