正则表达式
量词:
* 重复0次或更多次
+ 重复一次或更多次
?重复0次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
贪心匹配(默认)
惰性匹配: 量词 + ''?''
.*?x 前面取任意长度字符直到取到x
字符:
. 匹配除换行以外的任意字符
\w 匹配字母或数字或下划线
\d 匹配数字(digit)
\s 匹配任意空白符(space)
\n 匹配一个换行符
\t 匹配一个制表符(TAB)
\b 匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结尾
\W 匹配非字母或数字或下划线
\D 匹配非数字
\S 匹配非空白符
a|b 匹配字符a或者字符b
( ) 匹配括号内的表达式,也表示一个组(search)
[...] 匹配字符组中的字符
[^...] 匹配除字符组以外的所有字符
pyhton re模块
python正则
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Time : 2018/7/8 9:27 4 # @Author : jackendoff 5 # @Site : 6 # @File : text.py 7 # @Software: PyCharm 8 9 import re 10 11 # find_str = re.findall('a', 'jai jack') # 匹配所有,并显示所有 12 # print(find_str) 13 # 14 # search_str = re.search('a', 'jia jack') # 匹配找到的第一个,并显示 15 # print(search_str) 16 # search_gp = search_str.group() 17 # print(search_gp) 18 # 19 # match_str = re.match('a', 'a bc') # 匹配第一个 20 # print(match_str) 21 # match_gp = match_str.group() 22 # print(match_gp) 23 # 24 # find_str = re.findall('[a-z]\d', 'ji58a991') # 匹配a-z和数字 25 # print(find_str) 26 # find_str = re.findall('([a-z])\d', 'ji58a991') # 匹配a-z和数字 27 # print(find_str) 28 # find_str = re.findall('(?:[a-z])\d', 'ji58a991') # ()代表‘组’在findall里优先显示 '?:'代表‘取消优先’ 29 # print(find_str) 30 # 31 # search_str = re.search('([a-z])(\d)', 'jia123nfdj8684') # 匹配a-z和数字 分组 32 # search_gpp = search_str.group() # 显示匹配的数字和字母 33 # print(search_gpp) 34 # search_gp = search_str.group(1) # 显示第一个组 35 # print(search_gp) 36 # search_gp = search_str.group(2) # 显示第二个组 37 # print(search_gp) 38 39 # sp_str = re.split('\d', 'jia4jfa5f78a') # 依据数字分割 40 # print(sp_str) 41 # split_str = re.split('[a1]', 'jiafd54f1k') # 先根据a分割,仔根据1分割 42 # print(split_str) 43 # 44 # sub_str = re.sub('[\d]', '0', 'jia123fd6', 2) # 将数字替换成0,2表示只替换两个 45 # print(sub_str) 46 # sub_str = re.subn('[\d]', '0', 'jia123fd6') # 将数字替换成0,返回一个元组(替换的结果,替换了多少次) 47 # print(sub_str) 48 49 # obj = re.compile('\d{3}') # 将正则表达式编译成一个正则对象(当表达式特别复杂的时候此对象可以多次使用)匹配三个数字 50 # obj_str = obj.search('jia123kill') # 直接使用对象调用search进行匹配 51 # o_str = obj_str.group() 52 # print(o_str) 53 54 # ret = re.finditer('\d', 'jia5fd55fs6f5') # finditer返回一个存放匹配结果的迭代器(节省内存) 55 # print(ret) 56 # # for i in ret: 57 # print(i.group())