簡體   English   中英

從。* {的構造函數拋出的boost regex異常

[英]boost regex exception thrown from constructor for .*{

Boost版本1.60.0 gcc 4.8.4

當我使用字符串.*{構建boost :: regex對象時,出現一個異常,說明:

what():  Missing } in quantified repetition.  The error occurred while parsing the regular expresion: '.*{>>>HERE>>>'.

當對象是boost::regex::extended類型時發生此錯誤,但如果它是boost::regex::perl不會發生。

因此,以下引發異常:

regString(".*{");
boost::regex reg_e(regString, boost::regex::extended);

但這不是:

regString(".*{");
boost::regex reg_p(regString, boost::regex::perl);

這是預期的行為還是錯誤?
如果可以預期,為什么? 什么是適當的解決方法?

{ 在這種情況下是特殊字符,您需要對其進行轉義。

http://www.boost.org/doc/libs/1_60_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html

請注意,在不可重復的上下文中使用“ {”和“}”字符將被視為普通文字:這與Perl 5.x行為匹配。 例如,在表達式“ ab {1”,“ ab1}”和“ a {b} c”中,大括號均被視為文字,並且不會出現錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM