删除 QString 上的标签 [bracket]
Delete tag [bracket] on QString
我收到一条带有这样标签的文本:
This is [tag=\"value\"]my text[/tag].
我想这样改造它:
This is my text.
我看到我必须使用 QString.remove(QRegExp(myRegexExpression)) 但我没有成功。
我试过了:
remove(QRegExp("\[[^>]*\]")
结果:This is .
您应该将 ?
运算符添加到您的 *
量词中以使其变得惰性。像这样:
\[[^>]*?\]
这将使您的表达式在匹配开头 [
后匹配最少数量的字符,并将匹配其后可用的第一个 ]
,而不是最后一个。
您可以使用否定字符 class [^\]]
匹配任何字符,但 ]
:
str.remove(QRegExp("\[[^\]]*\]"));
您遇到的问题是由 [^>]*
构造引起的,该构造匹配任何字符,但 >
零次或多次超过 BB 标记边界并上升到最后一个 [=12] =] 因为 *
是一个贪婪的量词(即匹配尽可能多的字符)。参见 your regex in action。
我的正则表达式 (demo) 分解:
\[
- 文字 [
[^\]]*
- ]
以外的零个或多个(贪婪,尽可能多地匹配)字符
\]
- 文字 ]
.
我收到一条带有这样标签的文本:
This is [tag=\"value\"]my text[/tag].
我想这样改造它:
This is my text.
我看到我必须使用 QString.remove(QRegExp(myRegexExpression)) 但我没有成功。 我试过了:
remove(QRegExp("\[[^>]*\]")
结果:This is .
您应该将 ?
运算符添加到您的 *
量词中以使其变得惰性。像这样:
\[[^>]*?\]
这将使您的表达式在匹配开头 [
后匹配最少数量的字符,并将匹配其后可用的第一个 ]
,而不是最后一个。
您可以使用否定字符 class [^\]]
匹配任何字符,但 ]
:
str.remove(QRegExp("\[[^\]]*\]"));
您遇到的问题是由 [^>]*
构造引起的,该构造匹配任何字符,但 >
零次或多次超过 BB 标记边界并上升到最后一个 [=12] =] 因为 *
是一个贪婪的量词(即匹配尽可能多的字符)。参见 your regex in action。
我的正则表达式 (demo) 分解:
\[
- 文字[
[^\]]*
-]
以外的零个或多个(贪婪,尽可能多地匹配)字符
\]
- 文字]
.