2016-06-01 36 views
0

我有一個的std :: string,用文字這樣搜索一個線串的數量大於0

name0 0x3f700000 0x160000 1 0 

name1 0x3f700000 0x760000 0 23 

等。

我想知道的是,如果這一行中的最後一個數字大於0,並且之前的數字是1.

我做到了這一點,但它不是窩rk,總是返回一個匹配。

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,但最後一個數字似乎出錯了。

+0

可以有像'NAME0 0x3f700000 0x160000 1 0 abcd'數後文本? – rock321987

+0

不,號碼之後什麼也沒有 – user1876942

回答

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