目录
1. 单字符
- .表示除了\n外的任意一个字符
- \d为数字, \D反之
- \s表示空白字符, \S反之
- \w表示字母,数字,下划线, \W反之
2. 字符集
- []里面是单个字符进行匹配, 如果需要的话要好几个[]才行
3. 转义字符
- \
4. 数量规则
- *表示任意个字符
- +表示至少一个
- ?表示0或者1个
- 使用{}规定范围, 可以类似{3,5},注意不能有空格
5. 边界处理
- ^表示限制开头, 注意不能用[]
- $限制结尾的字符
- \b表示字符的边界,只有空格才行, \B相反
示例1
import re
str = 'abc'
match_result = re.match("abc", str) # match是从开头开始匹配的, 这样结果是None
find_result = re.findall("c", str) # 可以不从头开始,结果是一个列表
# .的使用
# .表示除了\n之外的任意一个字符, 字母,数字,标点这些都可以用.表示
str = "abc,.-d"
result1 = re.findall(".", str) # ['a', 'b', 'c', ',', '.', '-', 'd']
# \d 表示单个数字
str = "abc12-="
result2 = re.findall("\d", str) # ['1', '2']
# \D 表示非数字
str = "abc12-=()你好"
result2 = re.findall("\D", str) # ['a', 'b', 'c', '-', '=', '(', ')', '你', '好']
# \s表示空白字符, 换行等格式符也是空白符
str = "ab\n0 8"
result = re.findall("\s", str) # ['\n', ' ']
# \S表示非空白字符
str = "ab\n0 8"
result = re.findall("\S", str) # ['a', 'b', '0', '8']
# \w 字母, 数字, 下划线, 这些常见的可用的
str = "Aa09_-=1"
result = re.findall("\w", str) # ['A', 'a', '0', '9', '_', '1']
# \W 非字母, 数字, 下划线
str = "Aa09_-=1"
result = re.findall("\W", str) # ['-', '=']
示例2
import re
#[]本质上还是单个字符的寻找
str = "aa1bb1c1d4ge"
# 把符合单字符条件的字符找出来
result = re.findall('[abcde]', str) # ['a', 'a', 'b', 'b', 'c', 'd', 'e']
# 常见的满足顺序的字符可以用-表明范围
str = "aa1bb1c1d4ge"
result = re.findall('[a-e]', str) # ['a', 'a', 'b', 'b', 'c', 'd', 'e']
str = "098701230"
result = re.findall('[0-7]', str) # ['0', '7', '0', '1', '2', '3', '0']
# ^是取反符号, 取反并不局限与此类型
str = "aa1bb1c1d4ge"
result = re.findall('[^abcde]', str) # ['1', '1', '1', '4', 'g']
# 注意如果不用[]括起来, 代表的是以什么开头
str = "aa1bb1c1d4ge"
result = re.findall("^aa1\w+",str) # ['aa1bb1c1d4ge']
# 可以把字符连起来, 注意[]是寻找单字符的, 所以要想寻找多个需要好几个[]
str = "aa1AFGbb1c1d4ge"
result = re.findall('[aa1AFGbb1]', str) # ['a', 'a', '1', 'A', 'F', 'G', 'b', 'b', '1', 'c', '1', 'd', '4', 'g', 'e']
result = re.findall('aa1AFGbb1', str) # ['aa1AFGbb1']
result = re.findall('[a-z][0-9]',str) # ['a1', 'b1', 'c1', 'd4']
result = re.findall('\w[a-z][0-9]',str) # ['aa1', 'bb1', '1d4']
示例3
# 转义字符的好玩之处
# 这是因为\d python默认按路径来处理需要解析的字符串\d, 这样的话其实是表示为\\d了
str = "\d"
result = re.findall("\d",str) # []
result = re.findall("\\d",str) # []
result = re.findall("\\\d",str) # ['\\d']
result = re.findall("\\\\d",str) # ['\\d']
str = "\n"
result = re.findall("\\n",str) # ['\n']
result = re.findall("\\\n",str) # ['\n']
示例4
import re
# *表示任意个字符, 包括0, 所以实际中用+效果更好
str = "123456dad155"
result = re.findall("[\d]*", str) # ['123456', '', '', '', '155', '']
result = re.findall("\d*", str) # ['123456', '', '', '', '155', '']
# +表示至少一个字符
str = "123456dad155"
result1 = re.findall("[\d]+", str) # ['123456', '155']
result2 = re.findall("\d+", str) # ['123456', '155']
# ?表示0或者1个字符
str = "123456dad155"
result1 = re.findall("[\d]?", str) # ['1', '2', '3', '4', '5', '6', '', '', '', '1', '5', '5', '']
result2 = re.findall("\d?", str) # ['1', '2', '3', '4', '5', '6', '', '', '', '1', '5', '5', '']
# {n} , {m, n}表示出现数量
str = "123456dad155"
result1 = re.findall("\d{3}", str) # ['123', '456', '155']
示例代码5
import re
# ^表示限定开始的字符, 注意不带[],否则成了取反了
str = "a12c45b"
result1 = re.findall("^a\d{2}",str) # ['a12']
result2 = re.findall("^c\d{2}",str) # [], 开头不是c, 所以没有
# 使用$限定结束的字符
str = "0123458"
result = re.findall("\d{2}8$",str) # ['458']
result = re.findall("\d{2}5$",str) # []
# 使用\b表示字符的边界, 必须空格才行, \B反之
str = "abd abdag 3bd bda"
# str = "abd.1" 这个无法识别
result = re.findall('bd\\b', str) # 注意这里转义字符的使用, 这里表示用bd结尾的
result = re.findall('\\bbd', str) # 这里表示以bd开头的
result = re.findall('\\Bbd', str) # 这里表示不是以bd开头的
标签:字符,模块,示例,python,re,result,str,findall
From: https://www.cnblogs.com/sdulyq/p/17560586.html