我想要匹配从给定单词开始的所有行,说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的快照).