2

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

(?ms)^\\[(.+?)\\](.*?)(?=\\n\\[|.\\z)

[sec1] a = b [sec2] c = d 我得到[sec1] a = b[sec2] c = d

但我怎么能在 xpressive 中做到这一点?

4

1 回答 1

2

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

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

如果您使用 xpressive 的“静态”方言,通配符模式是_(in namespace boost::xpressive。它匹配任何字符。如果您想匹配除换行符以外的任何字符,您可以使用~_n. 最后,如果您想匹配任何字符除了逻辑换行符( \r\n、和 Unicode 变体)之外的单个字符\r\n,您可以使用~_ln.

(编辑:修正错字)

于 2012-07-01T23:32:41.250 回答