Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
私はVS2010を使用しています。
正規表現に問題がある
文字列を検索するには、どの正規表現を使用すればよいですか
std::string foo("s:{foo} s1:{bar}");
単語 foo、bar であり、おそらくそれらの位置を知っています。
のようなものだと思いました
std::regex r("\\{.*\\}");
動作するはずです。しかし、そうではありません。なんで?
文字列用s:{foo} s1:{bar}
s:{foo} s1:{bar}
{.*}一致します{foo} s1:{bar}
{.*}
{foo} s1:{bar}
.*貪欲に一致します。つまり、あなたの場合は最後 まで一致します。}
.*
}
{.*?}一致{foo}し、次の一致で一致します{bar}
{.*?}
{foo}
{bar}
.*?怠惰に一致します。つまり、あなたの場合は最初 まで一致します。}
.*?