我試圖利用questions like this one制定一個正則表達式將匹配在類似下面的一個非常簡單的Python語法類似給予函數名和所有參數:正則表達式的蟒蛇般的功能參數解析
mycall(x, y, hello)
與所期望的結果:
- 函數名稱:
mycall
- parame叔0:
x
- 參數1:
y
- 參數2:
hello
當然它也應該匹配noparams()
,和任意數量的參數。至於我的簡化,我只需要參數名稱,我不允許默認參數或與逗號分隔名稱列表不同的東西。
我嘗試用"(\\s*)([A-Za-z0-9_])+\\(\\)"
只匹配函數名字符串開頭空格失敗,與此代碼變種:
std::regex fnregexp(s);
std::smatch pieces_match;
if (std::regex_match(q, pieces_match, fnregexp))
{
std::cout << ">>>> '" << q << "'" << std::endl;
for (size_t i = 0; i < pieces_match.size(); ++i)
{
std::ssub_match sub_match = pieces_match[i];
std::string piece = sub_match.str();
std::cout << " submatch " << i << ": '" << piece << "'" << std::endl;
}
}
我有以下輸出" hello()"
:
>>>> ' hello()'
submatch 0: ' hello()'
submatch 1: ' '
submatch 2: 'o'
有了這個非常基本的語法,是否有可能找到函數的名稱及其參數?
乾杯!
不知道到底要什麼解析:函數聲明,比如'高清富(PARAM):'在Python或對函數調用? – besc
一個匹配類似Python的函數頭的字符串,我也可以省略'def'。 – senseiwa
您的輸入是否可以包含多個功能? – Gawil