我無法找到解釋re庫中某些操作的到期標誌。這個標誌在Python庫3的re庫中做了些什麼?
https://docs.python.org/3.6/library/re.html
例如,我有Python代碼以下位:
nestedPar = re.findall(r"\([^\(\)]*\)", s, 0)
,但我不能確定什麼,當我改變到底正在發生的是0到1,因爲它會導致崩潰。
任何人都可以解釋這個標誌意味着什麼嗎?
我無法找到解釋re庫中某些操作的到期標誌。這個標誌在Python庫3的re庫中做了些什麼?
https://docs.python.org/3.6/library/re.html
例如,我有Python代碼以下位:
nestedPar = re.findall(r"\([^\(\)]*\)", s, 0)
,但我不能確定什麼,當我改變到底正在發生的是0到1,因爲它會導致崩潰。
任何人都可以解釋這個標誌意味着什麼嗎?
第三個參數是選項的位掩碼,位掩碼定義爲(這一點,從技術上說,可以從版本而有所不同):
SRE_FLAG_TEMPLATE = 1 # template mode (disable backtracking)
SRE_FLAG_IGNORECASE = 2 # case insensitive
SRE_FLAG_LOCALE = 4 # honour system locale
SRE_FLAG_MULTILINE = 8 # treat target as multiline string
SRE_FLAG_DOTALL = 16 # treat target as a single string
SRE_FLAG_UNICODE = 32 # use unicode locale
SRE_FLAG_VERBOSE = 64 # ignore whitespace and comments
SRE_FLAG_DEBUG = 128 # debugging
使用一個簡單的按位OR(或你經常+
)你可以組合多個標誌(例如re.MULTILINE | re.DOTALL
)。它不應該在1
上失敗,但請不要直接使用數字,它們被分配給有意義的常量是有原因的。
編輯 - 模板模式(re.T
或re.TEMPLATE
),其標誌如上圖所示爲1
,是實驗性的,很多事情都可能出錯呢,直接從源:
# sre extensions (experimental, don't rely on these)
T = TEMPLATE = sre_compile.SRE_FLAG_TEMPLATE # disable backtracking
所以您遇到了模板模式的問題。無論哪種方式爲幸福的生活,不要自己設置標誌:)
可以肯定的是,它正在轟炸的字符串是 - a(bc)de – LandSharks
只是一個小小的挑剔,但是_「編纂」_並不是特別提供了什麼信息。也許_「他們被分配到**有意義的常量**出於某種原因」_會更好的措辭? –
@ChristianDean - 公平點,更新。 – zwer
該文檔沒有提到國旗是一個1.但有多個例子,例如, ** flags = re.IGNORECASE ** –
標記從[here]開始記錄(https://docs.python.org/3.6/library/re.html#re.A)。它們的數值沒有記錄,並且您不應該爲標誌傳遞int常量。 – user2357112