0
#include <QRegExp>
#include <QDebug>

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

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

如果前面没有'\',我需要编写QRegExp 来匹配'[' 符号之前的名称。在这种情况下,它应该打印“AA”,但它什么也不打印。在 [^\\] 部分添加 2 个斜杠后,它仅匹配 'A',"AA\\[45]"但对于这种情况,我需要它不匹配任何内容。

#include <QRegExp>
#include <QDebug>

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

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

这种情况不应该匹配任何东西,但它会打印“A”。

4

2 回答 2

0
#include <QRegExp>
#include <QDebug>

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

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

在你的帮助下我明白了。这就是我需要的。

于 2013-09-19T16:45:51.310 回答
0

这个正则表达式只会匹配你的字母,前提是它们后面跟着一个[,前面没有一个\

([^\\]*(?!^\\))\[\d+\]$
于 2013-09-19T17:34:58.410 回答