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

[この正規表現は、a が前に付いていないa が後に続く場合にのみ、文字と一致します。\

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