gpt4 book ai didi

c++ - 是否正则表达式(获取不是所有满足正则表达式的文本)

转载 作者:行者123 更新时间:2023-11-30 01:25:55 26 4
gpt4 key购买 nike

我想使用正则表达式在字符串(或 QString)中查找 "(引号)之间的内容。

我的简单字符串:x="20.51167",我想要 20.51167。

正则表达式有可能吗??

一开始我有这样的字符串:

<S id="1109" s5="1" nr="1183" n="Some text" test=" " x="20.53843" y="50.84443">

使用正则表达式,例如:(nr=\"[0-9]+\") (y=\"[0-9 .^\"]+\")" etc我得到像 x="20.51167"这样的简单字符串。也许这是错误的方式,我可以一次获得引号之间的值(value)??

最佳答案

对于您的特定示例,这将起作用:

#include <QRegExp>
#include <QString>
#include <iostream>
int main()
{
//Here's your regexp.
QRegExp re("\"[^\"^=]+\"");
//Here's your sample string:
QString test ="<S id=\"1109\" s5=\"1\" nr=\"1183\" n=\"Some text\" test=\" \" x=\"20.53843\" y=\"50.84443\">";
int offset = 0;
while( offset = re.indexIn( test, offset + 1 ) )
{
if(offset == -1)
break;
QString res = re.cap().replace("\"", "");
bool ok;
int iRes;
float fRes;
if( res.toInt( &ok ) && ok )
{
iRes = res.toInt();
std::cout << "int: " << iRes << std::endl;
}
else if ( res.toFloat( &ok ) && ok )
{
fRes = res.toFloat();
std::cout << "float: " << fRes << std::endl;
}
else
std::cout << "string: " << res.toStdString() << std::endl;
}
}

输出将是;

int: 1109
int: 1
int: 1183
string: Some text
string:
float: 20.5384
float: 50.8444

关于c++ - 是否正则表达式(获取不是所有满足正则表达式的文本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11468192/

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