2013-09-19 5 views
0
#include <QRegExp> 
#include <QDebug> 

int main() 
{ 
    QRegExp rx("(.*)[^\\]\\[\\d+\\]$"); 

    qDebug() << rx.indexIn("AA[45]"); 
    qDebug() << rx.cap(1); 
} 

Мне нужно написать QRegExp для сопоставления имени перед символом '[', если ему не предшествует '\'. В этом случае он должен печатать «AA», но ничего не печатает. После добавления 2 косой черты в [^ \\] части она соответствует только «А» для "AA\\[45]", но для этого случая мне нужно, чтобы она ничего не соответствовала.Почему это регулярное выражение matchh?

#include <QRegExp> 
#include <QDebug> 

int main() 
{ 
    QRegExp rx("(.*)[^\\\\]\\[\\d+\\]$"); 

    qDebug() << rx.indexIn("AA\[45]"); 
    qDebug() << rx.cap(1); 
} 

Этот случай не должен совпадать ни с чем, кроме как печатать "A".

+0

... и что это печатать? – Chowlett

+0

Он ничего не печатает – Ashot

ответ

0
#include <QRegExp> 
#include <QDebug> 

int main() 
{ 
    QRegExp rx("(.*[^\\\\])\\[\\d+\\]$"); 

    qDebug() << rx.indexIn("eeeA\\[45]"); 
    qDebug() << rx.indexIn("eeeA[45]"); 
} 

Я делаю это с вашей помощью. Это то, что мне нужно.

0

Это регулярное выражение будет соответствовать вашим письмам, только если они сопровождаются [, не предваряются по \

([^\\]*(?!^\\))\[\d+\]$ 
Смежные вопросы