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

标签 c++ regex string

<分区>

我有一个 std::string,带有这样的文本

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 Demo

关于c++ - 在字符串中的一行中搜索大于 0 的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37562760/

相关文章:

c++ - Sql Like在c++中的类似用法

python - 具有透明背景的小图像的感兴趣区域

c++ - 正则表达式和无效的空指针表达式

regex - 如何匹配评论中没有的字符串?

javascript - 正则表达式匹配所有以T开头的字符串

string - 在 Swift 中存储指针

c - 如何在C中的字符串末尾添加 "\n"

c++ - 从 QByteArray 加载 QQuickView

c++ - 覆盖父类(super class)成员

java - 字符串上的 split() 方法不起作用