lbf4325
发表于 2019-11-29 11:35:51
说实话这一节写的有点水group和groups 还是有区别的前面教程都是group你这里一上来就是groups
zhqzhqzhq
发表于 2020-1-5 12:12:06
..错别字能少点就更好了
ArmandXiao
发表于 2020-2-24 21:05:02
这玩意真的难,即便知道了,自己用也不会用
ArmandXiao
发表于 2020-2-25 09:52:33
肖凯文kevin 发表于 2016-1-31 12:40
re.search(r'.*[.](?!bat).*$','kevin.11bat')
re.search(r'.*[.](?!bat$).*$','kevin.11bat')
为什么我 ...
我也觉得没意义 因为后面还有东西。。
ArmandXiao
发表于 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不是在最后一个 第一个缺了 $ 符号!!
加油大佬们
1815702237
发表于 2020-4-22 14:45:03
开始晕了~
我是新小白
发表于 2020-6-6 14:18:50
厉害啊
qq13700416415
发表于 2020-8-14 11:05:03
排除后缀名这个真的很叼
SKY126
发表于 2021-5-10 08:58:41
前向断言确实有用 ?:非捕获组 ?P<name>命名组?=前向肯定断言?!前项否定断言
天堂悲歌
发表于 2022-3-13 22:22:09
{:10_243:}
hveagle
发表于 2022-6-15 18:31:30
越往后越难一些