python正则表达式

108 阅读2分钟
python中正则表达式,使用re模块中三个基础方法来做正则匹配

分别是match、search、findall三个基础方法

  • re.match(匹配规则, 被匹配字符串)

    从被匹配字符串开头进行匹配,匹配成功返回匹配对象(包含匹配的信息)

  • re.search(匹配规则, 被匹配字符串)

    搜索整个字符串,找出匹配的,从前向后找到第一个后就停止,不继续向后

  • re.findall(匹配规则, 被匹配字符串)

    匹配整个字符串,找出全部匹配项,如果找不到返回一个空list

  1. match:
import re

str = "python study"
result = re.match('python', str)
print(result)           # <re.Match object; span=(0, 6), match='python'>
print(result.group())   # python
print(result.span())    # (0, 6)  // 表示从0开始到第六位结束不包含第六位

str = "1python study python python"
result = re.match('python', str)
print(result)     # None 因为match是从开头查找,第一项不匹配就直接返回none了
  1. search:
str = "1python study python python"
result = re.search('python', str)   #
print(result)           # <re.Match object; span=(1, 7), match='python'>
print(result.span())    # (1, 7)
print(result.group())   # python
  1. findall:
str = "1python study python python"
result = re.findall('python', str)  #
print(result)  # ['python', 'python', 'python']

元字符匹配:

r"""
单字符匹配:
.  : 匹配任意一个字符,出了\n,\ . 匹配点本身
[] : 匹配[]中列举的字符
\d : 匹配数字,0-9
\D : 匹配非数字
\s : 匹配空白,即空格、tab键
\S : 匹配非空白
\w : 匹配单词字符,即a-z、A-Z、\0-9、_
\W : 匹配非单词字符

数量匹配
*       :匹配前一个规则的字符串出现0至无数次
+       :匹配前一个规则的字符串出现1至无数次
?       :匹配前一个规则的字符串出现0次或1次
{m}     :匹配前一个规则的字符串出现m次
{m,}    :匹配前一个规则的字符串至少出现m次
{m,n}   : 匹配前一个规则的字符串出现m到n次

边界匹配:
^   : 匹配字符串开头
$   : 匹配字符串结尾
\b  : 匹配一个单词的边界
\B  : 匹配费单词边界

分组匹配:
|   : 匹配左右任意一个表达式
()  : 将括号中字符作为一个分组
"""

演示使用:

str = "1python study @jijoamdomo!1547835——"
result = re.findall(r'\d', str)
print(result)  # ['1', '1', '5', '4', '7', '8', '3', '5']

result = re.findall(r'\W', str)
print(result)  # [' ', ' ', '@', '!', '—', '—']

result = re.findall(r'[a-zA-z]', str)
print(result)  # ['p', 'y', 't', 'h', 'o', 'n', 's', 't', 'u', 'd', 'y', 'j', 'i', 'j', 'o', 'a', 'm', 'd', 'o', 'm', 'o']
示例:匹配一个只有数字或字符组成,长度限制为6到10位的账号。
rule = "^[a-zA-Z0-9]{6,10}$"
str = "15247896"
print(re.findall(rule, str))    # ['15247896']

^ 表示从头开始匹配,$表示匹配到文件结尾,[a-zA-Z0-9]表示字符串中的内容是字母或者数字,{6,10}表示匹配前边规则中出现6-10次,如果字符串成功匹配,则返回一个列表,如果匹配失败,则返回空的[]。