2015-06-03 24 views
0

我跑進Python的正則表達式命名捕獲組100名爲捕獲組的限制。覆蓋Python庫文件,以規避大小限制

硬編碼的限制是sre_compile.py:

if p.pattern.groups > 100: 
    raise AssertionError(
     "sorry, but this version only supports 100 named groups" 
     ) 

我的理解是,這個限制是出於性能的考慮,不一定用於空間限制。就我而言,性能問題不如此能力重要。所以我想知道是否有合理的方法來解決這個限制?可能通過注入替換sre_compile.py文件並刪除大小檢查?當然,這聽起來相當危險,我知道不推薦這樣的行動。然而,在短期內,我需要繞開這個限制,從長遠來看,我有一個很好的工作。有關最佳解決方案的任何建議?

預先感謝您!

+0

爲了完整解決方案那樣工作,但有一個在C代碼本身另一個硬編碼限制。我最終使用了一個很好的替代python正則表達式包(https://pypi.python.org/pypi/regex/)。 – Colin

回答

1

無需使用Python的庫一塌糊塗,你可以簡單地在你的代碼替換功能:

import sre_compile 

def my_compile(p, flags=0): 
    ... 

sre_compile.compile = my_compile 
+0

哇,很酷。我沒有想到,這是可能的,太多的時間用java和c工作了,我想。那麼,這個解決方案是正確的,但在試用後,事實證明,這個限制也必須在底層正則表達式編譯器中複製(因爲現在的異常來自c代碼)。也許我可以切換編譯器。再次感謝! – Colin