我想匹配以給定單詞開頭的所有行,比如iheap。如果我沒有弄錯,那麼正則表達式(在ECMAScript語法中)"^iheap.*"
應該做到這一點。但是,當我使用libC++的正則表達式庫在C++ 11中測試時,只匹配第一行。所以"^..."
似乎只匹配輸入的開始,而不是開始行。使用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(基本上是ng 3.1 SVN的快照)。
只是偶然發現了這個問題...... fyi,boost :: regex(在EMCAScript模式下)匹配行首,即你的正則表達式可以工作。 – fscan 2013-06-29 20:08:31
Hrmm,只是略有相關,但'$'與VS2013中的'\ r \ n'不匹配 - 需要'\ s * $'或類似的匹配... – Cameron 2014-04-23 16:41:39