re模块(正则)

Posted kp1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了re模块(正则)相关的知识,希望对你有一定的参考价值。

一, 什么是正则?

  正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.

  在python中,正则内嵌在python中,并通过re模块实现,正则表达模式被编译成一系列的字节码,然后由c编写的匹配引擎执行.

二,常用的匹配模式(元字符)

技术分享图片

 

 

import re

# 将所有的数据都找出来放进列表中list,一一匹配
print(re.findall(alex, haha alex is alex is dsb))
# >>>: [‘alex‘, ‘alex‘]


# w 匹配字母数字及下划线(一个w每次匹配一个字符)
# W 匹配非字母数字及下划线
print(re.findall(w,Aah123 +-_))
# >>>: [‘A‘, ‘a‘, ‘h‘, ‘1‘, ‘2‘, ‘3‘, ‘_‘]

print(re.findall(ww,Aah123 +-_))
# >>>: [‘Aa‘, ‘h1‘, ‘23‘]

print(re.findall(w9w,Aa9h123 aaa9c+-_))
# >>>: [‘a9h‘, ‘a9c‘]



# s 匹配任意空白字符,等价于	

f
# S 匹配非空字符


# d 匹配任意数字,[0-9]
# D 匹配任意非数字


# ^ : 仅从开头开始匹配
# $ : 仅从尾部开始匹配
print(re.findall(^alex, alex is alex is alex))
# >>>: [‘alex‘]
print(re.findall(^alex, 1alex is alex is alex))
# >>>: []

 

重复匹配:  | . | * | ? | .* | .*? | + | {n,m}

# . :代表一个字符,该字符可以是任意字符(除换行符)
print(re.findall(a.c, a alc aaac a c asfdsaf))
# >>>: [‘alc‘, ‘aac‘, ‘a c‘]

print(re.findall(a.c, a alc aaac a
c asfd,re.DOTALL))  #DOTALL使得.匹配包括换行符在内的所有字符
# >>>: [‘alc‘, ‘aac‘, ‘a
c‘]

 

# ? :代表左边那一个字符出现0次或者1次
print(re.findall(ab?, a ab abb abbbb a123b a123bbbb))
# >>>: [‘a‘, ‘ab‘, ‘ab‘, ‘ab‘, ‘a‘, ‘a‘]

 

# * :代表左边那一个字符出现0次到无穷次
print(re.findall(ab*, a ab abb abbbb a123b a123bbbb))
# >>>: [‘a‘, ‘ab‘, ‘abb‘, ‘abbbb‘, ‘a‘, ‘a‘]

 

# + :代表左边那一个字符出现1次到无穷次
print(re.findall(ab+, a ab abb abbbb a123b a123bbbb))
# >>>: [‘ab‘, ‘abb‘, ‘abbbb‘]
# {n,m} :代表左边那一个字符出现n次到m次
print(re.findall(ab{1,3}, a ab abb abbbb a123b a123bbbb))
# >>>: [‘ab‘, ‘abb‘, ‘abbb‘]

 

# .* :匹配任意0个到无穷个字符,贪婪匹配
print(re.findall(a.*c,a132142qwdcavcccc(((()))))c2333))
# >>>: [‘a132142qwdcavcccc(((()))))c‘]

 

# .*? :匹配任意0个到无穷个字符,非贪婪匹配
print(re.findall(a.*?c, a132142qwdcavcccc(((()))))c2333))
# >>>: [‘a132142qwdc‘, ‘avc‘]

 

 

#  :转义
print(re.findall(a\\\\c,ac aac))
print(re.findall(ra\\c,ac aac))
# >>>: [‘a\\c‘]

 

 

# 忽略大小写
# print(re.findall(‘alex‘,‘my name is alex ALex is dSB‘,re.I))
# # >>>: [‘alex‘, ‘ALex‘]

# msg = ‘‘‘my name is egon
# asdfassg egon
# 122324324egon‘‘‘
# print(re.findall(‘egon$‘,msg,re.M))
# >>>: [‘egon‘, ‘egon‘, ‘egon‘]

 

 

# []: 代表匹配一个字符,这个字符是来自于自定义的范围
print(re.findall(a[1]c, a a1c aaac a c asfdsaf,re.DOTALL))
# >>>: [‘a1c‘]
print(re.findall(a[0-9]c, a a1c aaac a7c asfdsaf,re.DOTALL))  #[0-9]的数字
# >>>: [‘a1c‘, ‘a7c‘]
print(re.findall(a[a-zA-Z]c, a a1c aaac a7c asfdsaf,re.DOTALL))   #所有字母
# >>>: [‘aac‘]
print(re.findall(a[+*/-]c, a a1c aaac a7c asfdsaf,re.DOTALL))     #-代表连字符,在首尾才表示符号意思

 

以上是关于re模块(正则)的主要内容,如果未能解决你的问题,请参考以下文章

第43天python学习re模块学习

常用模块-正则re

python成长之路第三篇_正则表达式

python成长之路第三篇_正则表达式

python知识-正则表达式re模块

正则表达式