繁体   English   中英

使用javascript正则表达式提取python代码中的函数名称

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM