我得到一个带有这样标签的文字:
This is [tag=\"value\"]my text[/tag].
我希望将其转换为:
This is my text.
我已经看到我必须使用QString.remove(QRegExp(myRegexExpression)),但我没有成功。 我试过了:
删除(QRegExp(" \ [[^>] * \]")
结果:This is .
答案 0 :(得分:1)
您应该将?
运算符添加到*
量词,以使其变得懒惰。像这样:
\[[^>]*?\]
这将使您的表达式在与开头[
匹配后匹配最少量的字符,并且将匹配其后面的第一个]
,而不是最后一个。
答案 1 :(得分:0)
您可以使用与[^\\]]
之外的任何字符匹配的否定字符类]
:
str.remove(QRegExp("\\[[^\\]]*\\]"));
你遇到的问题是[^>]*
构造与任何字符相匹配但>
零次或多次超过BB标记边界并上升到最后]
因为*
是一个贪婪的量词(即匹配尽可能多的字符)。请参阅your regex in action。
我的正则表达式(demo)brekadown:
\[
- 文字[
[^\\]]*
- 零以上(贪婪,尽可能多地匹配)]
\]
- 文字]
。