次の文字列を関数に渡します。
void func(string expr)
{
regex pattern(expr);
}
func( "(\d{1,2}\.+\d{2})" )
ただし、Visual Studioデバッガーを使用すると、保存されている正規表現パターンが実際(d{1,2}.+d{2})
に正規表現が完全に誤動作していることがわかりました。なぜこれが起こっているのか、どうすれば修正できますか。
これらはバックスラッシュであり、デフォルトではエスケープ文字です。それらをリテラル文字として扱うには...
これを試してください(C ++ 11で)。Rは、の形式をとる生の文字列を示しますR "delimiter( raw_characters )delimiter"
。区切り文字は、任意の文字シーケンスにすることができます。この場合、括弧だけを使用しました。
func( R"((\d{1,2}\.+\d{2}))" )
またはこれはどのバージョンでも:
func( "(\\d{1,2}\\.+\\d{2})" )
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加