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



使用 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 。最后,如果要匹配除逻辑换行符(rnrn和 Unicode 变体)之外的任何单个字符,可以使用 ~_ln

(编辑:修正错别字)

最新更新