1
考慮的聲明是這樣的:正則表達式解析C++函數的返回類型(C++的實際子集)
virtual Foo * const operator=(Bar& b);
或
virtual Foo * const operator= (Bar& b); // note the optional number of whitespace after the function name
我想捕捉的Foo * const
部分。換句話說,我想匹配字符串開頭,可選的虛擬靜態和開始大括號之間的所有字符,除了大括號之前的最後一個單詞和任意數量的空白。
我想出了以下內容:
(?virtual|static)?\s*(?.*?)(?!\s*\()
但是,這是行不通的。
編輯:一些更多的例子:
Input Capture ----- ------- void f(); void static int Foo(); int virtual const int * const const int * const virtual Foo * operator+(Foo& b); Foo *
不一定有一個'='字符在函數名的末尾,我只是選擇了一個,表明有可能。一個足夠接近的模式來匹配函數名稱將是'[_a-zA-z] \ w + [= \?\ + \!] *',但只是替換'\ s *'和'\('之間的部分不工作 –
@fish你可能會提供更多可能的輸入信息,並說出你想要得到什麼完全一樣的輸出在你的問題? – Jerry
當然,我提供了更多的例子 –