Сопоставление «начала -строки -» с использованием библиотеки регулярных выражений libc++ (C++11)

Я хотел бы сопоставить все строки, начинающиеся с заданного слова, скажем, iheap. Если я не ошибаюсь, регулярное выражение (в синтаксисе ECMAScript)"^iheap.*"должен сделать трюк. Однако, когда я тестировал это на С++ 11 с использованием библиотеки регулярных выражений libС++, совпадала только первая строка. Таким образом, "^...", кажется, соответствует только началу -ввода -, а не началу -строки -.

Вот пример:

#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 ).

11
задан iheap 14 August 2012 в 22:05
поделиться