C++ 在字符串中的行中搜索大于0的数字
我有一个std::string,带有这样的文本C++ 在字符串中的行中搜索大于0的数字,c++,regex,string,C++,Regex,String,我有一个std::string,带有这样的文本 name0 0x3f700000 0x160000 1 0 或 等等 我想知道的是,这行的最后一个数字是否大于0,前面的数字是否为1 我这样做了,但它不起作用,它总是返回一个匹配 std::regex_search(buffer, match, std::regex(std::string("(^|\n)") + m_name + " [0-9a-fA-Fx]* [0-9a-fA-Fx]* 1 [1-9a-fA-Fx]*")); 你能说出错
name0 0x3f700000 0x160000 1 0
或
等等
我想知道的是,这行的最后一个数字是否大于0,前面的数字是否为1
我这样做了,但它不起作用,它总是返回一个匹配
std::regex_search(buffer, match, std::regex(std::string("(^|\n)") +
m_name + " [0-9a-fA-Fx]* [0-9a-fA-Fx]* 1 [1-9a-fA-Fx]*"));
你能说出错误在哪里吗?它似乎知道前一个数字何时为1,但最后一个数字似乎出错了。您可以使用
[1-9][0-9]*$
检查数字是否大于0
它的作用是什么?
将[1-9]
与1
匹配9
匹配零位或多位数字[0-9]*
匹配字符串的结尾$
name0 [0-9a-fA-Fx]* [0-9a-fA-Fx]* 1 [1-9][0-9]*$
您可以使用
[1-9][0-9]*$
检查数字是否大于0
它的作用是什么?
将[1-9]
与1
匹配9
匹配零位或多位数字[0-9]*
匹配字符串的结尾$
name0 [0-9a-fA-Fx]* [0-9a-fA-Fx]* 1 [1-9][0-9]*$
您可以使用这个正则表达式
1\s+[1-9]\d*$
或者更具体地说
^name\d+\s+0x[0-9a-f]+\s+0x[0-9a-f]+\s+1\s+[1-9]\d*$
您可以使用此正则表达式
1\s+[1-9]\d*$
或者更具体地说
^name\d+\s+0x[0-9a-f]+\s+0x[0-9a-f]+\s+1\s+[1-9]\d*$
数字后面是否可以有文本,如
名称0 0x3F7700000 0x160000 1 0 abcd
?否,数字后面是否可以有文本,如名称0 0x3F7700000 0x160000 1 0 abcd
?否,数字后面没有文本