2012-08-08 65 views
9

我正在使用C++ 11的<regex>支持,並希望檢查字符串的開頭是否與正則表達式匹配。 [我可以切換到提升,如果有幫助,但我的印象是,他們基本上是相同的。]C++ 11正則表達式:檢查字符串是否以正則表達式開始

顯然,如果我有控制的表達式的實際文本表示,我可以堅持一個^在開始作爲主播。

但是,如果我只是有一個regex(或basic_regex)對象?我可以修改它表示的正則表達式來添加錨嗎?或者我必須使用regex_search,得到結果,並檢查它是否從位置0開始?

+0

很多普通字符串都可以考慮爲正則表達式。 '「abc」'也是一個正則表達式,但只匹配確切的字符串。 – nhahtdh 2012-08-08 18:04:49

回答

10

使用時regex_search,例如,下面的打印 「1」 和 「0」 可以添加std::regex_constants::match_continuous標誌:

#include <regex> 
#include <string> 

int main() 
{ 
    std::regex rx ("\\d+"); 

    printf("%d\n", std::regex_search("12345abc1234", rx, 
            std::regex_constants::match_continuous)); 
    printf("%d\n", std::regex_search("abc12345", rx, 
            std::regex_constants::match_continuous)); 
    return 0; 
} 

標誌裝置(C++ 11§28.5.2/1 =表139):

表達式只能匹配從first開始的子序列。

+3

這是一個呃,這個國旗有趣的名字,但這正是我想要的!感謝一束 – EvanED 2012-08-08 21:59:58

相關問題