正则表达式笔记

前端之家收集整理的这篇文章主要介绍了正则表达式笔记前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Table:

literal: 普通的逐字匹配. "|": 该操作符具有延伸性(贪婪),例: at|home 匹配的是at或home,而不是t或h. '.': 任意一个字符(不含\n) "^": 匹配字符串起始部分 "$": 匹配字符串结束部分 "": 匹配0次或多次前面出现的表达示,只对前一位有效(非延展),重复次数含前面的字符,如果样本为:"aga23gaafa",那把表达式r"8"是能匹配到内容的,内容是NONE,因为这个表达式8*如果按重复0次算本身就是NONE. "+": 匹配1次或多次前面出现的表达式,重复次数注意事项同上. "?": 匹配0次或1次前面出现的表达式,重复次数注意事项同上. "?": ?同时还被重载赋以另一个含义: 当'?'用在闭合操作符后面,它将要求正则引擎尽可能少的匹配. (*和+是闭合操作符),如: 3+含义为: 3或33或333或3333...,如果是3+?意思为: 3 (取最不贪婪的值,让"+"代表重复一次的含义).

"{N}": 匹配之前的字符N次,N次包含了前面字符本身(非延展).如: 53{2}就是匹配"533"的意思. "{MN}": 匹配之前字符N-M次,其它同上. "[...]": 匹配字符集内的任一字符.如:[mark]匹配m或a或r或k "[x-y]": 匹配字符集内一个区间,如:[a-zA-Z] "(...)": 封闭正则

'\d': 任意十进制数,'\D'相反 '\w': 任意字母或数字(和[a-zA-Z0-9]同意),'\W'相反 '\s': 匹配空格,tab等. '\S'相反. '\b': 匹配单词边界,'\B'相反. 就是[a-zA-Z0-9]与[^a-zA-Z0-9]之间的边界内容.如:我希望在字符串"give me the themometer"中匹配单词'the' 应该使用"\bthe\b". '\N': 匹配己保存的子组. '\charactor': 转义特殊字符为本身,"?"就是?号本身.

re module: re.match(pattern,string,flag) //从字符串开始匹配 re.search(pattern,flag) //从字符串中间开始匹配(只匹配首次出现并符合条件的字符内容)

matched object:
	m.group(index)  //如果是参数index为0或无参数,返回整个配置结果,如果index为>=1,则返回相应子组的配置内容.
	m.groups()以一个tuple的形式返回所有子组(子组作为tuple中的元素返回)

re.findall(pattern,flag)  //工作方式和search相同,但是返回一个list,1.如果只成功匹配一次,那么所有子组为list中的元素. 2.如果多次成功匹配,list由元组构成,每一次成功匹配是list中的一个tuple,每一个成功匹配的子组为List中的tuple中的元素.

re.finditer(pattern,flag) //工作方式和search相同,但是返回内容为一个包含matched object的迭代器.

re.sub(pattern,new_str,string)  //使用new_str替代匹配pattern的string中的内容.返回值为替换后的string.
re.subn(pattern,string)  //工作内容和re.sub相同,返回值为一个包含2个元素的tuple,tuple[0]为替换后的新字符串,tuple[1]为替换的次数.
注: 可以使用\N指定匹配的某子组作为替换内容.(N为pattern的子组编号)
例: re.sub(r'(\d{1,2})/(\d{1,2})/(\d{2}|\d{4})',r'\2/\1/\3',2/20/1991),意思是把MM/DD/YYYY换成DD/MM/YYYY的时间格式.

re.split(pattern,string)  //使用pattern作为分隔符对原字符串进行分割,分割后的元素形成一个List并返回.

扩展符:
	(?i) //忽略大小写  (?m) //允许多行
	(?=xxx)  //正向前视断言,要匹配的内容后边必须有xxx跟随.  
		例:  "0 input errors,0 CRC,0 frame,0 overrun,0 "  如果我想匹配CRC之前的数字,但匹配内容不想含CRC,那么pattern为 r'\d+(?=\sCRC)'
	(?!xxx)  //负向前视断言,要匹配的内容后边必须没有xxx跟随.
	(?<=xxx) //正向后视断言,要匹配的内容前边必须有xxx.
		例: 'MTU 1500 bytes,BW 100000 Kbit,DLY 100 usec',如果我想匹配BW之后的数字,但匹配内容不包含BW,那么pattern为 r'(?<=BW\s)\d+'
	(?
原文链接:https://www.f2er.com/regex/357762.html

猜你在找的正则表达式相关文章