Regex xpressive中的哪个通配符表示文本的整个结尾?

Regex xpressive中的哪个通配符表示文本的整个结尾?,regex,boost-xpressive,Regex,Boost Xpressive,使用ANSI C PCRE,我可以通过以下方式提取节及其内容: (?ms)^\\[(.+?)\\](.*?)(?=\\n\\[|.\\z) 从[sec1]a=b[sec2]c=d 我得到了[sec1]a=b和[sec2]c=d 但是我怎样才能在xpressive中实现呢?如果您使用的是“动态”方言,那么您可以使用与PCRE完全相同的语法。例如(未经测试): 如果您使用的是xpressive的“静态”方言,则通配符模式是\(在名称空间boost::xpressive中)。它匹配任何字符。如果要匹

使用ANSI C PCRE,我可以通过以下方式提取节及其内容:

(?ms)^\\[(.+?)\\](.*?)(?=\\n\\[|.\\z)
[sec1]a=b[sec2]c=d
我得到了
[sec1]a=b
[sec2]c=d

但是我怎样才能在xpressive中实现呢?

如果您使用的是“动态”方言,那么您可以使用与PCRE完全相同的语法。例如(未经测试):

如果您使用的是xpressive的“静态”方言,则通配符模式是
\
(在名称空间
boost::xpressive
中)。它匹配任何字符。如果要匹配除换行符以外的任何字符,可以使用
~\n
。最后,如果要匹配除逻辑换行符以外的任何单个字符(
\r
\n
\r\n
和Unicode变体),您可以使用
~\u ln

(编辑:固定排版)

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