Какой подстановочный знак в 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
,
(Изменить: исправлена опечатка)