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(‘\w\w‘,‘Aah123 +-_‘))
# >>>: [‘Aa‘, ‘h1‘, ‘23‘]

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

# \s 匹配任意空白字符,等价于\t\n\r\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\nc asfd‘,re.DOTALL))  #DOTALL使得.匹配包括换行符在内的所有字符
# >>>: [‘alc‘, ‘aac‘, ‘a\nc‘]
# ? :代表左边那一个字符出现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‘,‘a\c aac‘))
print(re.findall(r‘a\\c‘,‘a\c 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))     #-代表连字符,在首尾才表示符号意思

原文地址:https://www.cnblogs.com/kp1995/p/10077222.html

时间: 2024-11-11 05:34:54

re模块(正则)的相关文章

Python全栈 正则表达式(re模块正则接口全方位详解)

re模块是Python的标准库模块 模块正则接口的整体模式 re.compile 返回regetx对象 finditer fullmatch match search 返回 match对象 match.属性|方法 re模块的使用: regex = re.compile(pattern,flags = 0) 功能 : 生成正则表达式对象 参数 : pattern     正则表达式 flags  功能标志位,丰富正则表达式的匹配 返回值: 返回一个正则表达式对象 re.findall(patter

day6 反射,hashlib模块,正则匹配,冒泡,选择,插入排序

一.反射(自省) 首先通过一个例子来看一下本文中可能用到的对象和相关概念. import sys # 模块,sys指向这个模块对象import inspectdef foo(): pass # 函数,foo指向这个函数对象 class Cat(object): # 类,Cat指向这个类对象 def __init__(self, name='kitty'): self.name = name def sayHi(self): # 实例方法,sayHi指向这个方法对象,使用类或实例.sayHi访问

Python使用re模块正则式的预编译及pickle方案

项目上线要求当中有言论和昵称的过滤需求, 客户端使用的是python脚本, python脚本中直接利用re模块来进行正则匹配, 一开始的做法是开启游戏后, 每帧编译2条正则式, 无奈运营需求里面100+条略为复杂的正则式, 一条编译起来在pc上都需要80ms, 造成客户端开启时候的卡顿. 解决方案当然是保存re模块编译的正则式结果, 之后开机直接加载就行, 然而需要注意的是re.compile()返回的_sre.SRE_Pattern对象虽然可以使用pickle保存下来, 但是这只是个假象, 实

re模块 正则匹配

import re re.M 多行模式 位或的意思 parrterm就是正则表达式的字符串,flags是选项,表达式需要被编译,通过语法.策划.分析后卫其编译为一种格式,与字符串之间进行转换 re模块 主要为了提速,re的其他方法为了提高效率都调用了编译方法,就是为了提速 re的方法 单次匹配 re.compile 和 re.match def compile(pattern, flags=0): return _compile(pattern, flags) 可看到,re最后返回的是_comp

常用模块--- 正则模块 正则表达式 re 模块

# 正则模块# 正则表达式# re模块 #--------------------------------------- time -----------------------------------------# 计算时间差# 做时间格式的转换 # 所有的模块要经历的两个步骤 # 要操作的概念本身 : 正则表达式 时间 # 使用模块去操作它 : re time # 学习 正则表达式 本身 # 什么是正则表达式 # 一种匹配字符串的规则 # input 一串数据 : # 是不是qq号码 : 全

re模块-正则模块

讲正题之前我们先来看一个例子:https://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/ 这是京东的注册页面,打开页面我们就看到这些要求输入个人信息的提示.假如我们随意的在手机号码这一栏输入一个11111111111,它会提示我们格式有误.这个功能是怎么实现的呢?假如现在你用python写一段代码,类似: phone_number = input('please input your phone number : ') 你怎么判断这

第五周日志模块正则和包

1.模块的使用 2.为什么要使用模块 1.从文件级别组织程序,更方便管理 2.引用别人写的,提升效率 3.如何实用模块 import spam 第一次导入模块发生几件事: 1.产生一个新的名称空间 2.运行原文件代码产生的名字都存放在1的名称空间中 运行过程中gloabl关键字指向改名称空间 当前文件的名称空间sapm 名称空间指向了spam.py运行文件的名称空间 def read1(): print(money) import spam import spam #重复导入时重复引用不是重新加

Python之re模块----正则匹配

正则的介绍及应用实例详解 """ 1.什么是正则 正则就是用一系列具有特殊含义的字符组成一套规则,该规则用来描述具有某一特征的字符串, 正则就是用来去一个大的字符串中匹配出符合规则的子字符串 2.为什么要用正则 1.用户注册 2.爬虫程序 3.如何用正则 """ import re #\w匹配字母数字下划线-----------\W匹配非字母数字下划线 print(re.findall('\w','hello 123_ */-=')) print

正则匹配

python中re模块 1.正则匹配基础知识 (1)通配符. .ython可以匹配 aython,jython,只有一个字符 如果要匹配a.py的话需要进行转义a\.py,r如果这样写a.py那么会匹配成aapy (2)字符集[] [a-z]ython 可以匹配a-z之间任意一个字符 yython [a-zA-Z0-9]ython 匹配a-z,A-Z,0-9的任意字符串 [^p]ython反转匹配,可以匹配除了python的字符串 (3)选择符 | python|perl匹配python和per