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 namespaceboost::xpressiveです。任意の文字に一致します。改行文字以外の任意の文字に一致させたい場合は~_n、使用できます。論理改行 ( \r\n、 、および Unicode バリアント)を除く単一文字\r\n、使用できます~_ln

(編集: タイプミスを修正)

于 2012-07-01T23:32:41.250 に答える