C++ 用于在[]之间拆分字符串的Qt正则表达式
我想拆分一个字符串C++ 用于在[]之间拆分字符串的Qt正则表达式,c++,regex,qt,C++,Regex,Qt,我想拆分一个字符串[a][b1][c2][d254][e0] 分为[A],[b1],[c2],[d254]和[e0] 我已经在线测试了表达式\[(.**?\],该表达式工作正常,但我无法使用QRegExp拆分它。代码如下所示 QRegExp rx("\[(.*?)\]"); //RegEx for [----] QString str("[A ] [B 1] [C 2] [D 254] [E 0] "); QStringList query = str.split(rx)
[a][b1][c2][d254][e0]
分为[A]
,[b1]
,[c2]
,[d254]
和[e0]
我已经在线测试了表达式\[(.**?\]
,该表达式工作正常,但我无法使用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;
}
QRegExp rx(“\[(.*?\])”//[---]的正则表达式
QString str(“[A][b1][c2][d254][e0]”);
QStringList query=str.split(rx);
for(自动问:查询){
qDebug()“\\[\124;\\]”
可以拆分所附的[项目]
正确拆分此字符串所需的是“lookaheads”和“lookbehinds”
QString s("[A ] [B 1] [C 2] [D 254] [E 0]");
QStringList sl = s.split(QRegularExpression("(?<=\\])[ ](?=\\[)"));
使用正则表达式进行匹配,而不是拆分。如何使用此匹配表达式进行拆分?
“\\[\\\\\]”
使用此拆分,但不会捕获分隔符,空格也会被捕获。“\[\\\\]”
为我工作,谢谢。虽然我不能包含分隔符。@Tushar,如果他的任何条目包含方括号,则这种类型的正则表达式可能会有问题。在这种情况下,这可能没问题,因为他的数据看起来严格是:[字母编号]
。但是如果是[字符串编号]
,这样的条目:[foo\]37]
会引起问题。谢谢您的解释。@akiva
QStringList sl = s.split(QRegularExpression("(?<="
+ QRegularExpression::escape("]")
+ ")[ ](?="
+ QRegularExpression::escape("[")
+ ")"));