1

pcrecppからPerlのPREMATCH($ `)およびPOSTMATCH($')に相当するC ++を取得する方法はありますか?文字列、char *、またはこれを指すindexes / startpos+lengthのペアに満足します。

StringPieceはこれの一部を達成する可能性があるようですが、それを取得する方法がわかりません。

perlで:

$_ = "Hello world";
if (/lo\s/) {
    $pre = $`; #should be "Hel"
    $post = $'; #should be "world"
}

C ++では、次のようになります。

string mystr = "Hello world"; //do I need to map this in a StringPiece?
if (pcrecpp::RE("lo\s").PartialMatch(mystr)) { //should I use Consume or FindAndConsume?
   //What should I do here to get pre+post matches???
}

pcre plainjane cには、文字列の「end」部分を含む一致を含むベクトルを返す機能があるようです。したがって、理論的にはそのようなpre / post変数を抽出できますが、それは大変な作業のようです。私はpcrecppインターフェースのシンプルさが好きです。

提案?ありがとう!

-エリック

4

1 に答える 1

3

FullMatch代わりに使用しPartialMatchて、事前に自分自身を明示的にキャプチャして投稿することができます。

string pre, match, post;
RE("(.*)(lo\\s)(.*)").FullMatch("Hello world", &pre, &match, &post);
于 2010-03-14T17:38:31.417 に答える