Qt正则表达式需要帮助

时间:2013-01-30 11:24:39

标签: regex qt text pattern-matching

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

一致

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

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

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

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

"*.png""png"

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

问题:

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

提前感谢任何建议!

1 个答案:

答案 0 :(得分: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"