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