感谢您提前提供任何帮助。我对qt很新,请原谅我的新手问题。
我想替换image1 =" jdjddsj"用" im"在字符串中使用正则表达式。这些参与者中有更多与xx =" ..."在我的字符串中,所以我想运行QRegExp贪婪,这似乎不起作用。
QString str_commando;
str_commando = "python python.py image1=\"sonstzweiteil\" one! path=\"sonstwas\" image2=\"sonsteinanderes\" two!"
QString str(str_commando); // The initial string.
qDebug() << str_commando.remove(QRegExp ("age1=\"([^>]*)\""));
/* Set field */
ui->lineeCommand->setText(str_commando);
遗憾的是:结果: python python.py im two!
qDebug() << str_commando.remove(QRegExp ("age1=\"([^>]*)\""));
我之前尝试过。结果相同。
我哪里错了?感谢您的帮助!
SOLUTION:
qDebug() << str_commando.replace(QRegExp ("image1=\"([^\"]*)\""), "im");
答案 0 :(得分:1)
字符集[^>]
包含"
。这意味着
str_commando.remove(QRegExp ("age1=\"([^>]*)\""));
匹配age1=\"sonstzweiteil\" one! path=\"sonstwas\" image2=\"sonsteinanderes\"
。如果您确定引号之间没有"
,则可以设置正则表达式 minimal 而不是 greedy 。另一种解决方案是将集[^>]
设置为[^>"]
。我也不知道为什么你禁止>
。
查看 QString 的文档后,我想你也可以这样做:
str_commando.replace(QRegExp("image1=\"([^\"]|\\\")*\""), "im");
或者如果您想要im="..."
:
str_commando.replace(QRegExp("image1=\"((?:[^\"]|\\\")*)\""), "im=\"\\1\"");