|
发表于 2020-2-25 10:10:35
|
显示全部楼层
本帖最后由 ArmandXiao 于 2020-2-25 10:14 编辑
抱歉 我刚刚的回答应该是错的。 这两个是有区别的
print(re.search(r'.*[.](?!bat).*$','kevin.bater'))
print(re.search(r'.*[.](?!bat$).*$','kevin.bater'))
你可以尝试一下这两个代码,他们是有区别的。
第一个返回 None
第二个返回 <_sre.SRE_Match object; span=(0, 11), match='kevin.bater'>
而你通过分析这个正则 你也可以发现 [.](?!bat$) 匹配 bat前面只能有一个 .,不能有多的字符。
否定的是这个意思:“这跟前向肯定断言相反(不匹配则表示成功,匹配表示失败)”
匹配则失败 你可以看看 第一个 因为 bat 不是最后一个 匹配了 所以失败了 返回 None
而第二个 因为bat不是最后一个 不匹配 所以成功了 返回object
或者用你的 bat前面加了俩数字
你可以把代码改成
print(re.search(r'.*[.]\d\d(?!bat).*$','kevin.11bater'))
print(re.search(r'.*[.]\d\d(?!bat$).*$','kevin.11bater'))
你会发现 第一个返回了 none 第二个返回了 object 原因是一样的 因为 bat不是在最后一个 第一个缺了 $ 符号!!
加油大佬们 |
|