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
。
(編集: タイプミスを修正)