python - 使用 re.compile(flags=),运算符如何 | 和 + 不同(如果有的话)?
问题描述
使用 python 正则表达式,标志本质上是int
s 以 2 的幂分布。它们的值如下:
for flag in [re.I, re.L, re.M, re.S, re.U, re.X, re.DEBUG, re.A]:
print(f'{flag.name:>10}', flag + 0, sep='\t')
# IGNORECASE 2
# LOCALE 4
# MULTILINE 8
# DOTALL 16
# UNICODE 32
# VERBOSE 64
# DEBUG 128
# ASCII 256
可以将多个标志传递给flags
关键字参数;re
文档建议使用按位 OR 运算符 ( |
),但据我所知,这实际上与使用加法运算符 ( +
) 相同。在下面的示例中,两个运算符都 yield 18
。
re.I | re. S
# <RegexFlag.DOTALL|IGNORECASE: 18>
re.I + re. S
# 18
除了不是官方推荐的方法之外,是否有任何实际原因为什么使用+
操作符会产生不希望的结果?
注意:我打算|
在我的代码中使用。这纯粹是一个学术问题。
解决方案
推荐阅读
- javascript - 在特定点创建范围
- c++ - 将所有向量值存储在数据类型中
- vba - 有没有办法在 VBA 宏中指定代理用户 ID 以连接到 oracle?
- python - 找出二进制数和算法的 leetcode 练习不想寻找解决方案,而是想改进我的方法?
- django-orm - 在 Django 中自我加入
- r - 使用带有参数正则表达式的提取函数时出错:未使用的参数(正则表达式 =
- lua - FiveM DeleteVehicle from world
- image - 如何使用 Cheerio 抓取图像并粘贴到 Google 表格?
- ios - ios 15.01 在 QLPreviewController 中捕获 AR 内容后背景是黑色的,只有 3D 模型可见
- vba - 从一个 Access 数据库复制到另一个 (VBA)