q="HeLLo WorLD"
re.match(r"(?i:h)eLLo\sWorLD", q) # matches, since only enabled for 'h'
re.match(r"(?i:h)eLLo\sworld", q) # doesn't match: flag only applies to the group
某些组合是冗余的,但引擎可以很好地处理它们:
q="HeLLo WorLD"
re.match(r"(?i:h)e(?-i:ll)o\sWorLD", q) # this fails; disabling the flag is redundant
re.match(r"(?i)(?i:h)e(?-i:LL)o\sworld", q) # this matches, but enabling the flag in the first group is redundant, since it's enabled globally
1条答案
按热度按时间odopli941#
Python有一种实现不区分大小写的内联修饰符的非典型方式。
(?i)
全局启用。这适用于整个字符串...(?-i:...)
.(?i:...)
下面是一些例子。
使用全局标志:
此操作可以多次执行。只有包含在组中的字符才会被视为区分大小写:
全局标志可以应用于模式中的任何地方,但是除前面之外的任何地方都不推荐使用,并且会产生一个
DepricationWarning
。在Python 3.8中,它仍然有效,并且遵循相同的规则。下面是非全局方法:
某些组合是冗余的,但引擎可以很好地处理它们:
注意:在python 3. 8上测试过。我想旧版本可能对此的处理略有不同。