我希望使用正则表达式从一个QString(.html)中提取信息。我明确地想要使用Regex(不使用解析器解决方案)和类QRegularExpression(出于多种原因,例如:原因)。
为了简化问题,这里是一个等效的任务。 构造源字符串:
注意:INFO可能会多或少,还有一些无用的标签。(例如6个INFO)
需要翻译的内容:
想要:Info1.1和Info1.2以及Info2.1和Info2.2(例如在列表中)
尝试:
1.
为了简化问题,这里是一个等效的任务。 构造源字符串:
<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>
注意:INFO可能会多或少,还有一些无用的标签。(例如6个INFO)
需要翻译的内容:
想要:Info1.1和Info1.2以及Info2.1和Info2.2(例如在列表中)
尝试:
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);
->毫无意义
问题:
正则表达式总是与整个字符串相关。例如<bar s>INFO</bar><bar s>INFO</bar>
会选择第一个<bar s>
和最后一个</bar>
。想要的是第一个
使用QRegExp似乎有解决方案,但我想用QRegularExpression来实现。