我想拆分字符串[A ] [B 1] [C 2] [D 254] [E 0]
加入[A ]
,[B 1]
,[C 2]
,[D 254]
和[E 0]
。
我已经在线测试了\[(.*?)\]
这个表现正常,但我无法使用QRegExp
拆分它。代码如下。
QRegExp rx("\[(.*?)\]"); //RegEx for [----]
QString str("[A ] [B 1] [C 2] [D 254] [E 0] ");
QStringList query = str.split(rx);
for( auto q : query ) {
qDebug() << q;
}
任何人都可以指出我犯错误的地方。谢谢。
答案 0 :(得分:1)
正确拆分此字符串所需的是&#34;预测&#34; 和&#34; lookbehinds&#34; 。
QString s("[A ] [B 1] [C 2] [D 254] [E 0]");
QStringList sl = s.split(QRegularExpression("(?<=\\])[ ](?=\\[)"));
把它扔进qDebug() << sl;
给了我这个:
让我们分解:
(?<=\\])
或(?<=PutTextHere)
是一个&#34;肯定的后瞻&#34; ,它将查看其背后的字符串是否匹配,但不包括在匹配中本身。 [ ]
这可能只是一个空白区域:
- 我只是包含方括号以便于阅读。(?=\\[)
或(?=PutTextHere)
是&#34;积极向前看&#34; \\[
你需要两个转义的原因是正则表达式需要一个转义符\
,你的代码需要转义转义符。另一种选择是:
QStringList sl = s.split(QRegularExpression("(?<="
+ QRegularExpression::escape("]")
+ ")[ ](?="
+ QRegularExpression::escape("[")
+ ")"));
答案 1 :(得分:0)
"\\[|\\] "
可以拆分随附的[ITEM]
。