iheap など、特定の単語で始まるすべての行に一致させたいと考えています。私が間違っていなければ、正規表現 (ECMAScript 構文)"^iheap.*"
でうまくいくはずです。しかし、libc++ の正規表現ライブラリを使用して C++11 でこれをテストしたところ、最初の行だけが一致しました。その"^..."
ため、行頭ではなく入力の先頭にのみ一致するようです。
次に例を示します。
#include <string>
#include <regex>
#include <iostream>
using namespace std;
int main() {
regex rx("^iheap.*");
string s = "iheap says hello.\niheap says hello again.\n";
cout << s << regex_replace(s, rx, "IHEAP");
return 0;
}
出力:
iheap says hello.
iheap says hello again.
IHEAP
iheap says hello again.
これは libc++ のバグですか、それとも何か間違っていますか? ありがとう!
注: Mac OS X Mountain Lion と Apple LLVM Compiler 4.0 (基本的には clang 3.1 SVN のスナップショット) を使用しています。