在字符串中的一行中搜索大于0的数字

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

本文关键字:搜索 大于 一行 数字 字符串      更新时间:2023-10-16

我有一个std::字符串,其中有一个类似的文本

name0 0x3f700000 0x160000 1 0

name1 0x3f700000 0x760000 0 23

等等。。

我想知道的是,这一行中的最后一个数字是否大于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]匹配19

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

  • $匹配字符串的末尾。

完整的正则表达式可以是

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

Regex演示

您可以使用此regex

1s+[1-9]d*$

Regex演示

或者更具体地说

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

Regex演示