8-5re模块补充:断言详解

重点例题(*****)

		import re

		print(re.findall("(?!^[a-zA-Z]+$)(?!^[0-9]+$)^[a-zA-Z0-9]","@d34a6b"))

		name=input(">>: ").strip() # egon1  egon2 egon3 ... egon100... egonN
		print(re.search("(egon)(N|100)",name).group(2))

		name="egonaaaN123"
		print(re.findall("egon(?=.*N|100)a",name))
		
		egonaaaN123
		egona
		egon(?=.*N|100)a


重点剖析:
	
	要点1
	re.findall("(?!^[a-zA-Z]+$)(?!^[0-9]+$)^[a-zA-Z0-9]","@d34a6b"))
	
	若前一步不成立(即并非纯字母/纯数字),才进行下一步,最后判断条件都符合了,再进行取值 

	要点2
 	^[0-9]$  # 指的是 整个待比较字符从头到尾必须都是 数字,才能满足规则
 
	 		^ 开头位置
	 		$ 结束位置

        ^...$ 其指定的是 待比较字符串从头到尾 的样式(整个待比较字符的开头 到 整个字符串的结尾)


    要点3
    "egon(?=.*N|100)a"
		先判断规则  然后进行断言, 断言成功 继续进行判断规则
		                        判断失败 直接结束   

--------------------------------------------------------




断言 就是一个判断依据(取值 要靠规则来提取);真正拿结果的是 非断言的规则得到的

.group(欲取出分组的下标)   取组

	按照索引取出若干分组,中的某个分组的内容




1、两种不同的断言方式 
	   
	  ① ?!   中,其后的(  ! 表表示取反  )
	   		
	   		规则成立,  则断言失败
	        规则不成立,则断言成功
	        	  
	  ② ?=   中,其后的
			
			规则成立,则断言成功
	    	规则不成立,则断言失败


2、断言中的指针变化
	
		断言的关键点:下标(指针)的变化

		断言是0宽度:成功的情况下,匹配完了之后指针还要跳过来

		断言的指针,会沿用上一次断言最后的指针的位置

		必须是匹配成功,最后才会发生指针的偏移(即回到开始断言的位置)

			所以断言成功,就相当于断言不存在(因为对原指针位置没有任何影响)


	    断言成功,指针回到(断言所判断内容的那一段字符串的开头)最前面(不一定是整个待比较字符串的最前面,要看断言开始的位置)

	    所以后续如果要从头进行取值的话,需要指定 开始 或 结束 的位置





3、断言成功与否之后进行的操作

		① 断言成功,继续进行下一步(进行判断规则/取值)

			指针会回到 断言位置的开头(开始进行断言的位置)

		② 断言失败,直接结束   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值