1. 导入re模块。
使用正则表达试,需要导入re模块。
import re #加载正则表达式模块2. re.findall()的使用
re.findall()返回的是一个列表,根据使用的通配符的情况其表现的形式不一样。
(1). : 表示任意1位字符,除了换行符\n和制表符\t。所以如果想表示2位,当然就用两个..啦
import re str1='I love Python' #.表示任意1位字符,除了换行符\n和制表符\t a=re.findall('l.',str1) #findall的返回值是一个列表 print(a)#['lo'](2).* :贪婪匹配
import re str1='I love Python' #.*贪婪匹配 print(re.findall('l.*',str1)) #匹配l之后的所有值,包含l ['love Python'] print(re.findall('l.*e',str1)) #匹配l之后到g之前的所有值,包含l和e ['love'](3).*?:偷懒匹配
带?表示有选择权,有选择权就懒了!!!
如果不指定结束,就会偷懒哈。
如果指定结束,则乖乖的匹配到结束为止了
import re str1='I love Python' #.*?偷懒匹配 print(re.findall('l.*?',str1)) #匹配l之后的任意字符,那么它就偷懒了,匹配了0个字符 ['l'] print(re.findall('lo.*?on',str1)) #匹配lo之后到on之前的所有值,包含lo和on,如果匹配到值了就停 ['love Python'](4)(.*?):带上括号之后,就不包含边界值。只返回边界内的值。
import re str1='I love Python' #(.*?)带上括号之后,就不包含边界值 print(re.findall('l(.*?)e',str1))#['ov'](5)*和+的区别
+号至少要匹配一位,而*可以是0位。
两者都可以匹配多位。
import re str1='I love Python' #*和+的区别,+号至少要匹配一位,而*可以是0位,当然两者都可以匹配多位 print(re.findall('lo.+?',str1)) #偷懒匹配,但至少要匹配1位 ['lov'] print(re.findall('lo.*?',str1)) #偷懒匹配,直接不匹配字符了['lo'] print(re.findall('lo.+?e',str1)) #因为后边界必须是e,所以偷懒不了了['love'] print(re.findall('lo.*?e',str1)) #因为后边界必须是e,所以偷懒不了了['love'](6)\w :匹配字母数字下划线
import re # \w 表示匹配字母数字下划线 str1='abc$de' print(re.findall('\w{1}',str1)) #{}里面的数字表示多少个字母数字下划线连续匹配['a', 'b', 'c', 'd', 'e'] print(re.findall('\w{2}',str1)) #{}里面的数字表示多少个字母数字下划线连续匹配['ab', 'de'] print(re.findall('\w{3}',str1)) #{}里面的数字表示多少个字母数字下划线连续匹配['abc'](7)\W :匹配非字母数字下划线(W时大写哦!)
import re # \W 表示匹配非字母数字下划线 str1='abc$de' print(re.findall('\W{1}',str1)) #{}里面的数字表示多少个非字母数字下划线连续匹配['$'] print(re.findall('\W{2}',str1)) #{}里面的数字表示多少个非字母数字下划线连续匹配[] print(re.findall('\W{3}',str1)) #{}里面的数字表示多少个非字母数字下划线连续匹配[](8)\s和\S
\s 匹配空字符串,以及\t制表符,换行符\n。 \S 匹配非(空字符串,以及\t制表符,换行符\n)。
import re #\s 匹配空字符串,以及\t制表符,换行符\n #\S 匹配非(空字符串,以及\t制表符,换行符\n) str1=' abc\n ' print(re.findall('\s',str1))#[' ', ' ', ' ', ' ', ' ', ' ', ' ', '\n', ' ', ' ', ' '] print(re.findall('\S',str1))#['a', 'b', 'c'](9)\d和\D
\d:匹配数字
\D:匹配非数字
import re #\d 匹配数字 str9='a1b2c3sgfsafsf3253244' print(re.findall('\d',str9))#['1', '2', '3', '3', '2', '5', '3', '2', '4', '4'] # \D匹配非数字 print(re.findall('\D',str9))#['a', 'b', 'c', 's', 'g', 'f', 's', 'a', 'f', 's', 'f'](10)修饰符re.I 不区分大小写
import re #修饰符re.I 不区分大小写 str1='abcABCaBCAbc' print(re.findall('abc',str1)) #区分大小写['abc'] print(re.findall('abc',str1,re.I)) #不区分大小写['abc', 'ABC', 'aBC', 'Abc'](11)修饰符re.S 匹配所有字符
import re #修饰符re.S 匹配所有字符 str11='abc\ndef\tegfwf' print(re.findall('.+',str11))#['abc', 'def\tegfwf'] print(re.findall('.+',str11,re.S))#['abc\ndef\tegfwf'](12)^匹配开头,$匹配结尾
import re #^匹配开头,$匹配结尾 list1=['abcde','deabc','ghabcdef'] for i in list1: print(re.findall('^abc',i)) print(re.findall('abc$',i))
