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

时间:2016-06-01 07:59:28

标签: 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,但最后一个数字似乎是错误的。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您可以使用此正则表达式

from kivy.app import App
from kivy.uix.screenmanager import Screen

from kivy.lang import Builder

gui = '''
LoginScreen:

    GridLayout:
        cols: 2

        Label:
            text: 'Subject'

        Label:

        Label:
            text: '1'

        SingleLineTextInput:

        Label:
            text: '2'

        SingleLineTextInput:

        Label:
            text: '3'

        SingleLineTextInput:

        Label:
            text: '4'

        SingleLineTextInput:

        GreenButton:
            text: 'Exit'
            on_press: app.stop()

        GreenButton:
            text: 'Run'


<SingleLineTextInput@TextInput>:
    multiline: False


<GreenButton@Button>:
    background_color: 0, 1, 0, 1
    size_hint_y: None
    height: self.parent.height * 0.111
'''


class LoginScreen(Screen):
    pass


class SimpleKivy(App):

    def build(self):
        return Builder.load_string(gui)


if __name__ == '__main__':
    SimpleKivy().run()

<强> Regex Demo

或更具体地说

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

<强> Regex Demo