作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在自学 Python,无法找到对此行为的解释:
当第一次编译 regex 对象并在带有 re.I 标志的已编译 regex 对象上使用 findall() 方法时,结果不同于使用 < strong>findall() 函数本身具有相同的标志。
(从 result 变量中删除 re.I 标记“修复”了结果的差异。)
import re
emails1 = re.compile(r"([A-z0-9._+-]+@[A-z0-9._+-]+\.[A-z]{2,})")
result = emails1.findall("xxx@yyy.com", re.I)
print(result)
>>>['x@yyy.com']
emails2 = re.findall(r"([A-z0-9._+-]+@[A-z0-9._+-]+\.[A-z]{2,})", "xxx@yyy.com", re.I)
print(emails2)
>>>['xxx@yyy.com']
感谢任何帮助或建议!
最佳答案
已编译正则表达式上的 findall
方法与 findall
函数具有不同的参数签名。
函数
findall(pattern, string, flags=0)
方法
findall(string, pos=0, endpos=9223372036854775807)
re.I
是一个值为 2 的枚举,因此您实际上是在要求编译后的方法从位置 2 开始,忽略第一个“xx”。
关于python - 为什么在 findall() 函数中使用 "re.I"标志会在编译的正则表达式对象上使用函数与自身使用的函数时给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68625758/
我是一名优秀的程序员,十分优秀!