加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Python基础之正则

发布时间:2023-01-29 14:01:29 所属栏目:MySql教程 来源:未知
导读: 一、概念
使用单个字符串来描述匹配一系列符合某个句法规则的字符串,是对字符串操作的一种逻辑公式
使用场景:处理文本和数据
正则表达式过程:依次拿出表达式和文本中的字符比较,如果每

一、概念

使用单个字符串来描述匹配一系列符合某个句法规则的字符串,是对字符串操作的一种逻辑公式

使用场景:处理文本和数据

正则表达式过程:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功,否则匹配失败

二、re模块操作

在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个模块,名字为re

1. re模块的使用过程

#coding=utf-8 # 导入re模块 import re # 使用match方法进行匹配操作 result = re.match(正则表达式,要匹配的字符串) # 如果上一步匹配到数据的话,可以使用group方法来提取数据 result.group()

2. re模块示例(匹配以itcast开头的语句)

#coding=utf-8 import re result = re.match("itcast","itcast.cn") result.group()

运行结果为:

itcast

3. 说明

r的作用

>>> mm = "c:\\a\\b\\c">>> mm'c:\\a\\b\\c'>>> print(mm) c:\a\b\c >>> print(mm) c:\a\b\c >>> re.match("c:\\\\",mm).group()'c:\\'>>> ret = re.match("c:\\\\",mm).group() >>> print(ret) c:\ >>> ret = re.match("c:\\\\a",mm).group() >>> print(ret) c:\a >>> ret = re.match(r"c:\\a",mm).group() >>> print(ret) c:\a >>> ret = re.match(r"c:\a",mm).group() Traceback (most recent call last): File "", line 1, in AttributeError:'NoneType' object has no attribute 'group'>>>

说明

Python中字符串前面加上 r 表示原生字符串,

与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。

Python里的原生字符串很好地解决了这个问题,有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。

>>> ret = re.match(r"c:\\a",mm).group() >>> print(ret) c:\a

三、正则表达式的语法

1.匹配单个字符

字符匹配.匹配任意字符(除了\n)[...]匹配字符集\d\D匹配数字非数字\s\S匹配空白非空白\w\W匹配单词字符[a-zA-Z0-9]非单词字符

例子

# coding=utf-8

import re

#匹配中括号MySQL 正则表达式,需要加斜杠

result = re.match(r'\[[\w]\]','[a]')

group = result.group()

print(group)

2.匹配多个字符

字符匹配*匹配前一个字符出现0次或者无限次,即可有可无+匹配前一个字符出现1次或者无限次,即只有有1次?匹配前一个字符出现1次或者0次,即要么有1次,

要么没有{m}匹配前一个字符出现m次{m,n}匹配前一个字符出现从m到n次*?/+?/??匹配模式变为非贪婪(尽可能少匹配字符)

#coding=utf-8 import re ret = re.match("[A-Z][a-z]*","Mm") ret.group()Mm ret = re.match("[A-Z][a-z]*","Aabcdef") ret.group()Aabcdef

result = re.match(r'[A-Z][a-z]*','AAdshgds')

group = result.group()A

3.匹配开头结尾

字符功能^匹配字符串开头$匹配字符串结尾

4.匹配分组

字符功能|匹配左右任意一个表达式(ab)将括号中字符作为一个分组\num引用分组num匹配到的字符串(?P)分组起别名(?P=name)引用别名为name分组匹配到的字符串

四、re模块的高级用法

search

需求:匹配出文章阅读的次数

#coding=utf-8 import re ret = re.search(r"\d+", "阅读次数为 9999") ret.group()

findall

需求:统计出python、c、c++相应文章阅读的次数

#coding=utf-8 import re ret = re.findall(r"\d+", "python = 9999, c = 7890, c++ = 12345") print ret

sub 将匹配到的数据进行替换

需求:将匹配到的阅读次数加1

方法1:

#coding=utf-8 import re ret = re.sub(r"\d+", '998', "python = 997") print ret

方法2:

#coding=utf-8 import re def add(temp): strNum = temp.group() num = int(strNum) + 1 return str(num) ret = re.sub(r"\d+", add, "python = 997") print ret ret = re.sub(r"\d+", add, "python = 99") print ret

从下面的字符串中取出文本

岗位职责:

完成推荐算法、数据统计、接口、后台等服务器端相关工作

必备要求:

良好的自我驱动力和职业素养,工作积极主动、结果导向

技术要求:

1、一年以上 Python 开发经验,掌握面向对象分析和设计,了解设计模式

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!