Python正则表达式

目录

 

 

1、正则表达式语法¶

2、Python正则表达式

1>一般字符

2>字符集合


 

1、正则表达式语法¶

先看图片,大概了解一下正则表达的整体规则

Python正则表达式_第1张图片

Python正则表达式_第2张图片

2、Python正则表达式

1>一般字符

一般字符串,就是特殊制定,根据特殊的字符串进行识别

PS:python进行正则表达的一般步骤

  • 指定好匹配的模式-pattern

  • 选择相应的方法-match,search等

  • 得到匹配结果-group

设定一个输入:input ,并导入需要的re包

import re
input = 'python学习很重要,正则表达也很重要 。 12abcABC789'
pattern = re.compile(r'正则表达')
re.findall(pattern,input)

out:    ['正则表达']

2>字符集合

  • [abc] 指定包含字符
  • [a-zA-Z] 来指定所以英文字母的大小写
  • [^a-zA-Z] 指定不匹配所有英文字母
pattern = re.compile(r'[abc]')
re.findall(pattern,input)

out:  ['a', 'b', 'c']

pattern = re.compile(r'[a-z]')
re.findall(pattern,input)

out:   ['p', 'y', 't', 'h', 'o', 'n', 'a', 'b', 'c']

pattern = re.compile(r'[a-zA-Z]')
re.findall(pattern,input)

out:   ['p', 'y', 't', 'h', 'o', 'n', 'a', 'b', 'c', 'A', 'B', 'C']

^非的用法

pattern = re.compile(r'[^a-zA-Z]')
re.findall(pattern,input)

out:   ['学', '习', '很', '重', '要', ',', '正', '则', '表', '达', '也', '很', '重', '要', ' ', '。', ' ', '1', '2', '7', '8', '9']

或方法

将两个规则并列起来,以‘ | ’连接,表示只要满足其中之一就可以匹配。

  • [a-zA-Z]|[0-9] 表示满足数字或字母就可以匹配,这个规则等价于 [a-zA-Z0-9]
pattern = re.compile(r'[a-zA-Z]|[0-9]')
re.findall(pattern,input)

out :   ['p', 'y', 't', 'h', 'o', 'n', '1', '2', 'a', 'b', 'c', 'A', 'B', 'C', '7', '8', '9']

匹配数字 ‘\d’ 等价于 [0-9]

pattern = re.compile(r'\d')
re.findall(pattern,input)

out:  ['1', '2', '7', '8', '9'] 

‘\D’ 匹配非数字

pattern = re.compile(r'\D')
re.findall(pattern,input)

out:  ['p', 'y', 't', 'h','o', 'n', '学', '习', '很', '重', '要', ',', '正', '则', '表', '达', '也', '很', '重', '要', ' ', '。', ' ', 'a', 'b', 'c', 'A', 'B','C']

‘\W’ 匹配非字母和数字

pattern = re.compile(r'\W')
re.findall(pattern,input)

out: [',', ' ', '。', ' ']

‘\s’ 匹配间隔符

pattern = re.compile(r'\s')
re.findall(pattern,input)

out:[' ', ' ']

重复

正则式可以匹配不定长的字符串

‘*’ 0 或多次匹配

pattern = re.compile(r'\d*')
re.findall(pattern,input)

out: ['', '', '', '', '', '', '', '', '','', '', '', '', '', '', '', '', '', '', '', '', '', '12', '', '', '', '', '', '', '789', '']

‘+’ 1 次或多次匹配

pattern = re.compile(r'\d+')
re.findall(pattern,input)

out: ['12', '789']

‘?’ 0 或 1 次匹配

pattern = re.compile(r'\d?')
re.findall(pattern,input)

out: 

['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '1', '2', '', '', '', '', '', '', '7', '8', '9', '']

精确匹配和最小匹配¶

‘{m}’ 精确匹配 m 次

pattern = re.compile(r'\d{3}')
re.findall(pattern,input)

out: ['789']

 {m,n}’ 匹配最少 m 次,最多 n 次。 (n>m)

pattern = re.compile(r'\d{1,3}')
re.findall(pattern,input)

['12', '789']

 

你可能感兴趣的:(python基础操作)