从我的课本(自动化无聊的东西,艾尔·斯维加特):
“如果希望正则表达式不区分大小写且包含换行符以匹配点字符,则可以按如下方式形成re.compile()
调用:
someRegexValue = re.compile('foo', re.IGNORECASE | re.DOTALL)
不幸的是,re.compile()
函数只接受一个值作为其第二个参数。您可以通过使用管道字符(|
)组合re.IGNORECASE
和re.DOTALL
变量来绕过此限制,在本上下文中,此字符称为按位或运算符
此页面作为附加资源提供:https://wiki.python.org/moin/BitwiseOperators/
我不明白为什么我们不使用按位and运算符。参考该页,如果我们将x和y视为一些匹配条件,并且两者必须同时应用,我会直观地使用and运算符
我们不能这样做有什么原因吗
各种
re.FLAGS
是位掩码的一部分,每个标志都是2的某个值以占据某个位位置。例如:因此,表达式
re.IGNORECASE | re.DOTALL
将生成以下位掩码:许多
re
库函数的flags参数都期望这样的位掩码来决定应用哪些标志。如果我们按位&
上述两个运算符,我们只会得到零。事实上,对于两个不同标志之间的任何按位&
,我们将得到零,因为没有任何位会重叠相关问题 更多 >
编程相关推荐