我想使用正则表达式从 QString (.html) 中提取信息。我明确想使用正则表达式(无解析器解决方案)和类Q正则表达式 http://qt-project.org/doc/qt-5.0/qtcore/qregularexpression.html(出于多种原因,例如:Reasons http://dangelog.wordpress.com/2012/04/07/qregularexpression/).
为了简化方面,这里有一个问题等效任务。
构造的源字符串:
<foo><bar s>INFO1.1</bar> </ qux> <peter></peter><bar e>INFO1.2
</bar><fred></ senseless></fred></ xx><lol></lol></foo><bar s>INFO2.1</bar>
</ nothing><endlessSenselessTags></endlessSenselessTags><rofl>
<bar e>INFO2.2</bar></rofl>
*注意:*可能有更多或更少的信息和额外的无感标签。 (例如 6 条信息)
Wanted:
Info1.1 和 Info1.2 以及 Info2.1 和 Info2.2(例如在列表中)
Attempt
1.
QRegularExpression reA(".*<bar [es]>(.*)</bar>.*", QRegularExpression::DotMatchesEverythingOption);
->
INFOa</bar> </ qux> <peter></peter><bar e>INFOb
</bar><fred></ senseless></fred></ xx><lol></lol></foo><bar s>INFOc</bar>
</ nothing><endlessSenselessTags></endlessSenselessTags><rofl>
<bar e>INFOd
2.
QRegularExpression reA("(.*<bar [es]>(.*)</bar>.*)*", QRegularExpression::DotMatchesEverythingOption);
->毫无意义
Problem:正则表达式始终与整个字符串相关。<bar s>INFO</bar><bar s>INFO</bar>
会选择第一个<bar s>
最后一个和</bar>
。通缉是第一位的
使用 QRegExp 似乎有一个解决方案,但我想使用 QRegularExpression 来做到这一点。