Python正则表达式模块中的简单大小写折叠与完全大小写折叠

Python正则表达式模块中的简单大小写折叠与完全大小写折叠,python,regex,python-regex,Python,Regex,Python Regex,这是我要问的模块:,是Matthew Barnett的regex 在项目描述页面中,V0和V1之间的行为差异如下(请注意粗体部分): 新旧行为 为了与re模块兼容,此模块有2个 行为: 版本0行为(旧行为,与re模块兼容): 请注意,re模块的行为可能会随时间而改变,以及 我将努力在版本0中匹配该行为 由模式中的VERSION0或V0标志或(?V0)指示 Unicode中不区分大小写的匹配使用简单大小写折叠 默认 版本1行为(新行为,可能不同于 re模块): 由模式中的VERSION1或

这是我要问的模块:,是Matthew Barnett的
regex

在项目描述页面中,V0和V1之间的行为差异如下(请注意粗体部分):

新旧行为

为了与
re
模块兼容,此模块有2个 行为:

  • 版本0行为(旧行为,与re模块兼容):

    请注意,re模块的行为可能会随时间而改变,以及 我将努力在版本0中匹配该行为

    • 由模式中的
      VERSION0
      V0
      标志或
      (?V0)
      指示
    • Unicode中不区分大小写的匹配使用简单大小写折叠 默认
  • 版本1行为(新行为,可能不同于 re模块):

    • 由模式中的
      VERSION1
      V1
      标志或
      (?V1)
      指示
    • 默认情况下,Unicode中不区分大小写的匹配使用全大小写折叠
如果未指定版本,正则表达式模块将默认为
regex.default\u version

我自己尝试了几个例子,但没有弄清楚它的作用:

Python 3.6.7(默认,2018年10月22日11:32:17)
linux上的[GCC 8.2.0]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>导入正则表达式
>>>r=regex.compile(“(?V0i)ц”)
>>>r
regex.regex('(?V0i)ц',flags=regex.I|regex.V0)
>>>r.search(“П”)
>>>regex.search(“(?V0i)é”,“É”)
>>>正则表达式搜索(“(?V0i)é”,“E”)
>>>正则表达式搜索(“(?V1i)é”,“E”)
简单箱子折叠和完整箱子折叠有什么区别?或者,您可以提供一个示例,其中(不区分大小写)正则表达式与V1中的某个内容匹配,而与V0中的某个内容不匹配吗?

它遵循。摘录:

#此文件中的条目采用以下机器可读格式:
#
#
;#
#
#状态字段为:
#C:公共大小写折叠,由简单映射和完整映射共享的公共映射。
#F:全大小写折叠,导致字符串长度增长的映射。多个字符由空格分隔。
#S:简单的大小写折叠,映射到与F不同的单个字符。
[...]
#用法:
#A.要进行简单的大小写折叠,请使用状态为C+S的映射。
#B.要进行完整的大小写折叠,请使用状态为C+F的映射。
只有少数特殊字符的折叠方式不同,例如小型大写拉丁字母s:

00DF;F0073 0073; # 拉丁文小写字母S
[...]
1E9E;F0073 0073; # 拉丁文大写字母夏普S
1E9E;s00DF;#拉丁文大写字母夏普S

未测试,但可能会出现以下情况。完全大小写折叠可以用两个字符替换一些特殊字符,而简单的大小写折叠则不能。例如大写字母和小写拉丁字母s.@MichaelButscher Great,很好用。如果你把它作为答案写下来,你会得到一个绿色的勾号。