xpressive中的通配符是什么意思是文本的整个结尾?

时间:2012-06-30 17:19:48

标签: regex boost-xpressive

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

(编辑:修正错字)