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