[英]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.