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]*$ |
检查数字是否大于
它做什么?
[1-9] 与1 与9 匹配。[0-9]* 与零位或多位数字匹配$ 匹配字符串的结尾。
完整的正则表达式可以是
1 | name0 [0-9a-fA-Fx]* [0-9a-fA-Fx]* 1 [1-9][0-9]*$ |
正则表达式