使用QRegExp筛选文本
我想用使用QRegExp筛选文本,regex,qt,Regex,Qt,我想用QRegExp过滤掉${…},这样它可以重新运行所有选定元素的QStringList: “${NAME}”将正则表达式更改为QRegularExpression rx(“(\\${.*?})” 您的第一次尝试没有成功,因为QRegExp不支持通过/…/g进行全局匹配,并且通常不符合perl。在Qt5中,您最好使用改进得多的QRegularExpression 你的第二次尝试没有成功,因为你的正则表达式太贪婪了。它正在抓取开始的花括号{直到最后一个结束的花括号} 如果您在*捕获中添加问号,您
QRegExp
过滤掉${…}
,这样它可以重新运行所有选定元素的QStringList
:
“${NAME}”将正则表达式更改为
QRegularExpression rx(“(\\${.*?})”代码>
您的第一次尝试没有成功,因为QRegExp
不支持通过/…/g
进行全局匹配,并且通常不符合perl。在Qt5中,您最好使用改进得多的QRegularExpression
你的第二次尝试没有成功,因为你的正则表达式太贪婪了。它正在抓取开始的花括号{
直到最后一个结束的花括号}
如果您在*
捕获中添加问号,您将关闭贪婪,在这种情况下,它将只捕获您正在寻找的内容
不过,要小心尝试将此解决方案扩展得更远。一般来说,.QRegExp rx(“/(\\\\${.*})/g”);是的,你是对的,这与反斜杠匹配。如果使用Qt5,你可以尝试QRegularExpression
。它是perl兼容的,而QRegExp
不是。我也不确定/../g是否会按照您在Qt中的想法执行QRegularExpression
包含一个globalMatch
功能。谢谢,但请查看我的最新答案能否将所需的输出字符串添加到问题中?你的一天是怎样的?\t\t\t是的,是吗?
QString text = "Hello ${NAME} \
How is your ${DAY} so? \
Bye, ${MEH} ${MEH}\
${MEH}";
// Regex: /(\${.*})/g
QRegExp rx("/(\\${.*})/g");
QStringList list;
int pos = 0;
while ((pos = rx.indexIn(text, pos)) != -1) {
QString val = rx.cap(1);
list << val;
qDebug () << "Val: " << val;
pos += rx.matchedLength();
}
QString text = "Hello ${NAME} \
How is your ${DAY} so? \
Bye, ${MEH} ${MEH}\
${MEH}";
QRegularExpression rx("(\\${.*})");
QRegularExpressionMatchIterator i = rx.globalMatch(text);
while (i.hasNext()) {
QRegularExpressionMatch match = i.next();
qDebug() << "Value: " << match.captured(0);
}