誰寫了下面的線路可能使用Python包稱爲regex
程序員。Python的正則表達式編譯
UNIT = regex.compile("(?:{A}(?:'{A})?)++|-+|\S".format(A='\p{Word_Break=ALetter}'))
有人能幫忙解釋一下A='\p{Word_Break=ALetter}'
和-+
手段?
誰寫了下面的線路可能使用Python包稱爲regex
程序員。Python的正則表達式編譯
UNIT = regex.compile("(?:{A}(?:'{A})?)++|-+|\S".format(A='\p{Word_Break=ALetter}'))
有人能幫忙解釋一下A='\p{Word_Break=ALetter}'
和-+
手段?
的\p{property=value}
操作上的Unicode碼點的屬性相匹配,幷包索引頁上記錄您鏈接到:
的Unicode碼點的屬性,包括腳本和塊
\p{property=value}; \P{property=value}; \p{value} ; \P{value}
入口任何Unicode字符,其匹配合作depoint與價值ALetter
一個Word_Break
property(目前有以Unicode碼點數據庫24941根火柴,看到Unicode Text Segmentation, Word Boundaries chapter specifiation瞭解詳細信息)。
你給的例子還使用標準的Python string formatting的部分表達插值到正則表達式被編譯。 「{A}」部分只是.format(A='...')
部分的佔位符。最終的結果是:
"(?:\p{Word_Break=ALetter}(?:'\p{Word_Break=ALetter})?)++|-+|\S"
的-+
序列只是匹配1個或多個-
破折號,就像在Python re
模塊表情,這不是什麼特別的東西,真的。
現在,++
之前這是更有趣。這是一個possessive quantifier,使用它可以防止正則表達式匹配器嘗試所有可能的模式排列。這是一個性能優化,可以防止catastrophic backtracking問題。
我已經刪除了'pypi'標籤;該模塊可能通過pypi分發,但這個問題不是關於'pypi'本身。 –