关于c ++:在字符串中搜索大于0的数字

Search a line in a string for a number greater than 0

本问题已经有最佳答案,请猛点这里访问。

我有一个STD::字符串,带有这样的文本

1
name0 0x3f700000 0x160000 1 0

1
name1 0x3f700000 0x760000 0 23

等。。

我想知道的是,这行中的最后一个数字是否大于0,前面的数字是否为1。

我做了这个,但它不起作用,它总是返回一个匹配。

1
2
3
std::regex_search(buffer, match, std::regex(std::string("(^|
)"
) +  
m_name +" [0-9a-fA-Fx]* [0-9a-fA-Fx]* 1 [1-9a-fA-Fx]*"));

你能说出错误在哪里吗?它似乎知道之前的数字是1,但最后一个数字似乎出错了。


你可以用这个regex

1
1\s+[1-9]\d*$

正则表达式

或者更具体地说

1
^name\d+\s+0x[0-9a-f]+\s+0x[0-9a-f]+\s+1\s+[1-9]\d*$

正则表达式


你可以使用

1
[1-9][0-9]*$

检查数字是否大于0

它做什么?

  • [1-9]19匹配。

  • [0-9]*与零位或多位数字匹配

  • $匹配字符串的结尾。

完整的正则表达式可以是

1
name0 [0-9a-fA-Fx]* [0-9a-fA-Fx]* 1 [1-9][0-9]*$

正则表达式