我正在使用C++ 11的<regex>
支持,並希望檢查字符串的開頭是否與正則表達式匹配。 [我可以切換到提升,如果有幫助,但我的印象是,他們基本上是相同的。]C++ 11正則表達式:檢查字符串是否以正則表達式開始
顯然,如果我有控制的表達式的實際文本表示,我可以堅持一個^
在開始作爲主播。
但是,如果我只是有一個regex
(或basic_regex
)對象?我可以修改它表示的正則表達式來添加錨嗎?或者我必須使用regex_search
,得到結果,並檢查它是否從位置0開始?
我正在使用C++ 11的<regex>
支持,並希望檢查字符串的開頭是否與正則表達式匹配。 [我可以切換到提升,如果有幫助,但我的印象是,他們基本上是相同的。]C++ 11正則表達式:檢查字符串是否以正則表達式開始
顯然,如果我有控制的表達式的實際文本表示,我可以堅持一個^
在開始作爲主播。
但是,如果我只是有一個regex
(或basic_regex
)對象?我可以修改它表示的正則表達式來添加錨嗎?或者我必須使用regex_search
,得到結果,並檢查它是否從位置0開始?
使用時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
開始的子序列。
這是一個呃,這個國旗有趣的名字,但這正是我想要的!感謝一束 – EvanED 2012-08-08 21:59:58
很多普通字符串都可以考慮爲正則表達式。 '「abc」'也是一個正則表達式,但只匹配確切的字符串。 – nhahtdh 2012-08-08 18:04:49