使用ANSI C PCRE,我可以通过以下方式提取部分及其内容:
(?ms)^\\[(.+?)\\](.*?)(?=\\n\\[|.\\z)
来自[sec1] a = b [sec2] c = d
我得到了[sec1] a = b
和[sec2] c = d
但我怎么能在xpressive中做到这一点?
答案 0 :(得分:2)
如果您使用的是“动态”方言,则可以使用与PCRE完全相同的语法。例如(未经测试):
using namespace boost::xpressive;
sregex rx = sregex::compile("(?ms)^\\[(.+?)\\](.*?)(?=\\n\\[|.\\z");
如果您正在使用xpressive的“静态”方言,则通配符模式为_
(在命名空间boost::xpressive
中。它匹配任何字符。如果要匹配除换行符之外的任何字符,您可以使用~_n
。最后,如果您想匹配除逻辑换行符(\r
,\n
,\r\n
和Unicode变体)之外的任何单个字符,您可以使用~_ln
。
(编辑:修正错字)