這聽起來很容易(而且很可能是這樣),但我正在努力應對以下正則運算式挑戰。
我試圖在不包括引數串列的情況下識別以下所有行的函式名稱(因此修剪括號之間的任何內容)。除非它是模板描述的一部分,即在 '<' 和 '>' 之間。此外,方法名稱后的任何偽影都應該被忽略......
到目前為止,我最好的嘗試是
^[^\(\)]
例如,這是一個涵蓋我所有案例的典型輸入:
operator()(Name::UI::IKeyListener*) const
notify<void (Name::UI::IMouseListener::*)(Name::UI::MouseEvent const&)>
forEachLoadCommand(Diagnostics&, void
entry(void*) 144
輸出:
operator
notify<void (Name::UI::IMouseListener::*)(Name::UI::MouseEvent const&)>
forEachLoadCommand
entry
我無法正確理解第二行,它會回傳“notify<void”,這是有道理的......但我不知道如何解決這個問題。
我想也許另一個小組會有所幫助?
我在這里已經有一個 Regex101 沙箱:https ://regex101.com/r/JZvC15/1
謝謝!
uj5u.com熱心網友回復:
您可以將此正則運算式與模板子字串的可選匹配項一起使用,即<...>:
^\s*\w (?:<.*>)?
正則運算式演示
正則運算式詳細資訊:
^: 開始\s*: 匹配 0 個或多個空格\w: 匹配 1 個單詞字符(?:<.*>)?<...>:匹配最長子字串的可選非捕獲組
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/432362.html
標籤:正则表达式
下一篇:URL字串的正則運算式部分
