Какой подстановочный знак в xpressive означает весь конец текста?

С ANSI C PCRE я мог извлекать разделы и их содержимое с помощью:

(?ms)^\\[(.+?)\\](.*?)(?=\\n\\[|.\\z)

От [sec1] a = b [sec2] c = d я получил [sec1] a = b а также [sec2] c = d

Но как я могу сделать это в xpressive?

1 ответ

Если вы используете "динамический" диалект, вы можете использовать тот же синтаксис, что и для PCRE. Например (не проверено):

using namespace boost::xpressive;
sregex rx = sregex::compile("(?ms)^\\[(.+?)\\](.*?)(?=\\n\\[|.\\z");

Если вы используете "статический" диалект xpressive, шаблон подстановки _ (в пространстве имен boost::xpressive, Это соответствует любому персонажу. Если вы хотите сопоставить любой символ, кроме символа новой строки, вы можете использовать ~_n, Наконец, если вы хотите сопоставить любой отдельный символ, кроме логической новой строки (\r, \n, \r\nи варианты Unicode), вы можете использовать ~_ln,

(Изменить: исправлена ​​опечатка)

Другие вопросы по тегам