Я хотел бы совместить все строки, начинающиеся с данного слова, например iheap. Если я не ошибаюсь, регулярное выражение (в синтаксисе ECMAScript) "^iheap.*" должно сделать трюк. Однако, когда я тестировал это на С++ 11, используя библиотеку libС++ regex, сопоставляется только первая строка. Таким образом, "^...", похоже, соответствует началу ввода вместо начала строки.
Вот пример:
#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.
Является ли это ошибкой libС++ или я делаю что-то неправильно? Спасибо!
Примечание. Я использую Mac OS X Mountain Lion и Apple LLVM Compiler 4.0 (в основном снимок clang 3.1 SVN).
