gpt4 book ai didi

c++ - QT中使用贪婪正则表达式删除字符串

转载 作者:行者123 更新时间:2023-11-28 02:19:33 26 4
gpt4 key购买 nike

提前感谢您的帮助。我是 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 我是两个!

 qDebug() << str_commando.remove(QRegExp ("age1=\"([^>]*)\""));

我以前试过。相同的结果。

我哪里错了?提前感谢您的帮助!

解决方案:

qDebug() << str_commando.replace(QRegExp ("image1=\"([^\"]*)\""), "im");

最佳答案

字符集[^>]包括"。这意味着正则表达式在

str_commando.remove(QRegExp ("age1=\"([^>]*)\""));

匹配 age1=\"sonstzweiteil\"一个! path=\"sonstwas\"image2=\"sonsteinanderes\".如果您确定引号之间没有 ",您可以设置正则表达式 minimal 而不是 greedy。另一个解决方案是设置将 [^>] 设置为 [^>"]。我也不知道你为什么禁止 >

在查看了QString 的文档后,我认为您也可以这样做:

str_commando.replace(QRegExp("image1=\"([^\"]|\\\")*\""), "im");

或者如果你想要im="...":

str_commando.replace(QRegExp("image1=\"((?:[^\"]|\\\")*)\""), "im=\"\\1\"");

关于c++ - QT中使用贪婪正则表达式删除字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33024005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com