我正在尝试将文本放在多个标签中,如下所示:
文字档案:
Internal Auto-Configured Settings File
________________________________________
(( Do not attempt to edit it manually ))
________________________________________
# Saved certifications:
<ca>
Text which I want to extract
</ca>
...
<cert>Another text I want to extract</cert>
...
在我的代码中,我打开上一个文件并阅读其内容&amp;将其存储到QString
。到目前为止,我已经完成了以下工作但没有取得任何成功:
QRegularExpression regex("<ca>(.*)</ca>", QRegularExpression::MultilineOption);
QRegularExpressionMatch match = regex.match(content);
QString ca = match.captured(1);
qDebug() << ca;
qDebug() << "\n\nDone!!";
&LT;&LT;对<cert>
也做同样的事情,但我得到两个空字符串。
答案 0 :(得分:0)
答案 1 :(得分:0)
使用QRegularExpression::DotMatchesEverythingOption
而不是QRegularExpression::MultilineOption
。问题是由于.
与默认模式下的新行字符不匹配。
引用文档:
模式字符串中的点元字符(
.
)允许匹配主题字符串中的任何字符,包括换行符(通常,点与换行符不匹配)。此选项对应于Perl正则表达式中的/s
修饰符。
确保</ca>
仅在输入中出现一次。
如果不是这样,请稍微修改一下表达式:
"<ca>(.*?)</ca>"
这会使量词变得懒惰(而不是默认的贪婪),并使其与最接近的结束标记</ca>
匹配。