python正则入门

正则语法

在这里插入图片描述

在这里插入图片描述

表达式实例

P(Y|YT|YTH|YTHO)?N 'PN''PYN''PYTN''PYTHN''PYTHON'
PYTHON+ 'PYTHON''PYTHONN''PYTHONNN' …
PY[TH]ON 'PYTON''PYHON'
PY[^TH]?ON 'PYON''PYaON''PYbON''PYcON'…
PY{:3}N 'PN''PYN''PYYN''PYYYN'
^[A‐Za‐z]+$ 			由26个字母组成的字符串
^[A‐Za‐z0‐9]+$ 			由26个字母和数字组成的字符串
^‐?\d+$					整数形式的字符串
^[09]*[19][09]*$		正整数形式的字符串
[19]\d{5}				中国境内邮政编码,6[\u4e00‐\u9fa5]			匹配中文字符
\d{3}‐\d{8}|\d{4}‐\d{7}	国内电话号码,01068913536
Re库介绍

主要用于字符串匹配

import re

re库采用raw string类型表示正则表达式,r’text’
r’[1‐9]\d{5}’
re库也可以采用string类型表示正则表达式例如:
‘[1‐9]\d{5}’

功能函数:
在这里插入图片描述

  1. re.search(pattern, string, flags=0)
    在一个字符串中搜索匹配正则表达式的第一个位置
    返回match对象
    在这里插入图片描述
    flags : 正则表达式使用时的控制标记
    在这里插入图片描述

  2. re.match(pattern, string, flags=0)
    从一个字符串的开始位置起匹配正则表达式
    返回match对象
    在这里插入图片描述

  3. re.findall(pattern, string, flags=0)
    搜索字符串,以列表类型返回全部能匹配的子串

  4. re.split(pattern, string, maxsplit=0, flags=0
    将一个字符串按照正则表达式匹配结果进行分割
    返回列表类型

  5. re.finditer(pattern, string, flags=0)
    搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象

  6. re.sub(pattern, repl, string, count=0, flags=0)
    在一个字符串中替换所有匹配正则表达式的子串
    返回替换后的字符串

另一种等价写法:

regex = re.compile(r'[1‐9]\d{5}')
regex .search('BIT 100081')

在这里插入图片描述

Match对象介绍

Match对象是一次匹配的结果,包含匹配的很多信息
match对象属性
在这里插入图片描述
match对象的方法

在这里插入图片描述

贪婪匹配与最小匹配

Re库默认采用贪婪匹配,即输出匹配最长的子串

match = re.search(r'PY.*N', 'PYANBNCNDN')
match.group(0)

在这里插入图片描述
如何输出最短的子串呢?

match = re.search(r'PY.*?N', 'PYANBNCNDN')
match.group(0)

在这里插入图片描述
最小匹配操作符号
在这里插入图片描述

实践

去除文本中中英文标点符号
emove_chars = '[·’!"#$%&\'()*+,-./:;<=>?@,。?★、…【】《》?“”‘’![\\]^_`{|}~]+'
re.sub(remove_chars, "", juzi)

在这里插入图片描述

提取视图创建语句的字段名

需求:将sql建立视图语句的AS后面的字段名提取出来
详情:语句类似
create view view_test
as select
colA as colA ,–A列
colB as colB --B列
from
b
关键代码:

with open(r'V_.sql','r') as f:
	data = f.readlines()
for line in data:
	matchObj = re.match(r'(.*) AS (.*?)--(.*)',line,re.M|re.I)
	if matchObj :
		col1 = re.sub(r'\W','',matchObj.group(2))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值