Я хотел бы сопоставить все строки, начинающиеся с заданного слова, скажем, 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 ).