簡體   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