谁写了下面的线路可能使用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'本身。 –