5

C# のRegex.Matchメソッドには、特定のオフセットでマッチングを開始できるようにするオーバーロードがあります。

std::regex文字列内の指定した位置で一致を開始するにはどうすればよいですか?

素朴な解決策に関する注意:

いいえ、その位置から始まる部分文字列を渡すことはできません。接頭辞によって状況が変わる可能性があります。

たとえば、プレフィックスは、指定された位置が改行の先頭ではないことを示している可能性がありますが、文字列を切り落とすと、改行のように見え、改行を検出する必要があるパターンに対して誤った一致が得られます。後読みなどにも同じ問題が存在します。

4

1 に答える 1

4

重要なのは、一致フラグを使用して、反復子がより大きな文字列の一部であることを指定することです。

@ildjarnが提案したように高度なイテレータを使用std::regex_constants::match_prev_availし、イテレータが逆参照可能であることを指定するフラグを使用する必要があります--first。これにより、正規表現マッチャーが直前の要素をテストの一部として使用できるようになります。

于 2013-01-07T20:47:40.403 に答える