[英]Extract function names in python code using javascript regex
我正在使用prism.js
突出顯示python代碼,但由於某些原因,它沒有突出顯示被稱為deep_flatten()
或flatten([1,2,3])
或flatten(list(map(lambda x: x*2,[1,2,3])))
。
所以做了如下代碼來克服這個問題
[...document.getElementsByClassName('code')].forEach(x => {
x.innerText = x.innerText.replace(/(\w+)\([^\(\)]*\)/gi,match=>{
if(match.match(/^\d/)){
return match
}
else {
return `<span class="called-function">${match}</span>`
}
}
})
對於前兩個,它工作正常,但對於其他兩個,則失敗。 在做谷歌搜索時,我發現這被稱為遞歸,只能用解析器來完成。 在javscript中搜索python解析器時,我發現了很多,但是它們很大並且可以解析整個代碼。
如何制作解析器/正則表達式,以提取所有函數名稱並將其包含在span
標記內。
我不希望特定代碼只是一些偽代碼或算法來進行。
std libs中的默認re包不能處理遞歸regex
表達式,但是似乎regex
包可以
/(\w+)\([^\(\)]*\)/gi
可以更改為
/(\w+)(\((?:[^\(\)]|(?2))*\))/gi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.