0

我正在尝试构建一个正则表达式来从严格格式化的字符串中检索文件类型。格式是沿线

"Image formats (*.png *.jpg *.bmp)"

我的第一个理论是搜索以 '*' 然后 '.' 开头的字符串。然后匹配(并捕获)任何字符,直到找到空格或圆括号,例如。

QRegExp re("\\*\\.(.*)[\\s|\\)]")

这给了我以下(启用最少)

"*.png""png"

我也尝试过使用 \w (单词字符)但没有占上风。正则表达式引擎使用 perl 语法,反斜杠也需要“转义”,因为 c++ 也处理它们。

问题:

我需要一个正则表达式来从严格格式化的字符串中搜索文件类型,即从上面的字符串中我需要 3 个字符串“png”、“jpg”和“bmp”。

在此先感谢您的任何建议!

4

1 回答 1

2
QString str = "Image formats (*.png *.jpg *.bmp)";
QRegExp re("([*][.](.*))[\\s|\\)]"); // "(\\*\\.(.*))[\\s|\\)]" - also works
re.setMinimal(true);

int pos = 0;
while ((pos = re.indexIn(str, pos)) != -1)
{
    qDebug() << re.cap(1) << re.cap(2);
    pos += re.matchedLength();
}

输出:

"*.png" "png"
"*.jpg" "jpg"
"*.bmp" "bmp"
于 2013-01-30T11:40:57.987 回答