mirror of
https://github.com/boostorg/regex.git
synced 2025-07-17 14:22:08 +02:00
Fix case that differs from Perl behavior.
This commit is contained in:
@ -346,8 +346,13 @@ bool basic_regex_parser<charT, traits>::parse_extended()
|
|||||||
++m_position;
|
++m_position;
|
||||||
return parse_repeat_range(false);
|
return parse_repeat_range(false);
|
||||||
case regex_constants::syntax_close_brace:
|
case regex_constants::syntax_close_brace:
|
||||||
fail(regex_constants::error_brace, this->m_position - this->m_base, "Found a closing repetition operator } with no corresponding {.");
|
if((this->flags() & regbase::no_perl_ex) == regbase::no_perl_ex)
|
||||||
return false;
|
{
|
||||||
|
fail(regex_constants::error_brace, this->m_position - this->m_base, "Found a closing repetition operator } with no corresponding {.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
result = parse_literal();
|
||||||
|
break;
|
||||||
case regex_constants::syntax_or:
|
case regex_constants::syntax_or:
|
||||||
return parse_alt();
|
return parse_alt();
|
||||||
case regex_constants::syntax_open_set:
|
case regex_constants::syntax_open_set:
|
||||||
|
@ -172,6 +172,10 @@ void test_simple_repeats()
|
|||||||
TEST_REGEX_SEARCH("^a{0,1}?$", perl, "aaaaa", match_default, make_array(-2, -2));
|
TEST_REGEX_SEARCH("^a{0,1}?$", perl, "aaaaa", match_default, make_array(-2, -2));
|
||||||
TEST_REGEX_SEARCH("^(?:a){0,1}?$", perl, "aaaaa", match_default, make_array(-2, -2));
|
TEST_REGEX_SEARCH("^(?:a){0,1}?$", perl, "aaaaa", match_default, make_array(-2, -2));
|
||||||
TEST_REGEX_SEARCH("^a(?:bc)?", perl, "abcbc", match_any|match_all, make_array(-2, -2));
|
TEST_REGEX_SEARCH("^a(?:bc)?", perl, "abcbc", match_any|match_all, make_array(-2, -2));
|
||||||
|
TEST_REGEX_SEARCH("a}", perl, "a}", match_default, make_array(0, 2, -2, -2));
|
||||||
|
TEST_REGEX_SEARCH("a{12b", perl, "a{12bc", match_default, make_array(0, 5, -2, -2));
|
||||||
|
TEST_INVALID_REGEX("a{b", extended);
|
||||||
|
TEST_INVALID_REGEX("a}b", extended);
|
||||||
test_simple_repeats2();
|
test_simple_repeats2();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user