ANSI C PCRE を使用すると、次の方法でセクションとその内容を抽出できます。
(?ms)^\\[(.+?)\\](.*?)(?=\\n\\[|.\\z)
[sec1] a = b [sec2] c = d
私が得た[sec1] a = bものから[sec2] c = d
しかし、どうすれば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 の「静的」方言を使用している場合、ワイルドカード パターンは_(in namespaceboost::xpressiveです。任意の文字に一致します。改行文字以外の任意の文字に一致させたい場合は~_n、使用できます。論理改行 ( \r、\n、 、および Unicode バリアント)を除く単一文字\r\n、使用できます~_ln。
(編集: タイプミスを修正)