初次写博客,有需要修改的地方请及时回复,长期进行更改
一、正则表达式概述
正则表达式,又称规则表达式,在代码中常简写为regex、regexp或RE,是计算机科学的一个概念。
正则表通常被用来检索、替换那些符合某个模式(规则)的文本。
正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,
就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。
二、re模块操作
在Python中需要通过正则表达式对字符串进⾏匹配的时候,需要使⽤⼀个模块,名字为re
1.re模块的使用过程:
#coding=utf-8
# 导入re模块
import re
# 使用match方法进行匹配操作,匹配到的数据会被存放到result内
result = re.match(正则表达式,要匹配的字符串)
# 如果上一步匹配到数据的话,可以使用group方法来提取数据
result.group()
2.使用案例:
2. re模块示例(匹配以HGS开头的语句)
#coding=utf-8
import re
result = re.match("HGS","HGS.python3")
result.group()
3.运行结果:
HGS
4. 说明
re.match() 能够匹配出以xxx开头的字符串
三、 匹配单个字符
上述了解到通过re模块能够完成使用正则表达式来匹配字符串
这里,将要讲解正则表达式的单字符匹配,下列表格最为扩展 不用死记硬背,了解即可.
字符 | 功能 |
---|---|
. | 匹配任意1个字符(除了\n) |
[ ] | 匹配[ ]中列举的字符 |
\d | 匹配数字,即0-9 |
\D | 匹配非数字,即不是数字 |
\s | 匹配空白,即 空格,tab键 |
\S | 匹配非空白 |
\w | 匹配单词字符,即a-z、A-Z、0-9、_ |
\W | 匹配非单词字符,即 "/w"的补集,等价于 [^a-zA-Z0-9_] |
示例1.[]:
#coding=utf-8
import re
# 如果hello的首字符小写,那么正则表达式需要小写的h
ret = re.match("h","hello Python")
print(ret.group())
# 如果hello的首字符大写,那么正则表达式需要大写的H
ret = re.match("H","Hello Python")
print(ret.group())
# 大小写h都可以的情况
ret = re.match("[hH]","hello Python")
print(ret.group())
ret = re.match("[hH]","Hello Python")
print(ret.group())
ret = re.match("[hH]ello Python","Hello Python")
print(ret.group())
#ret = re.match("hello","Hello",re.I)
#print(ret.group()) #忽略大小写ignore-----Hello
# 匹配0到9第一种写法
ret = re.match("[0123456789]Hello Python","7Hello Python")
print(ret.group())
# 匹配0到9第二种写法
ret = re.match("[0-9]Hello Python","7Hello Python")
print(ret.group())
ret = re.match("[0-35-9]Hello Python","7Hello Python")
print(ret.group())
# 下面这个正则不能够匹配到数字4,因此ret为None
ret = re.match("[0-35-9]Hello Python","4Hello Python")
# print(ret.group())
运行结果为:
h
H
h
H
Hello Python
7Hello Python
7Hello Python
7Hello Python
示例2. \d:
#coding=utf-8
import re
# 普通的匹配方式
ret = re.match("神州1号","神州1号发射成功")
print(ret.group())
ret = re.match("神州2号","神州2号发射成功")
print(ret.group())
ret = re.match("神州3号","神州3号发射成功")
print(ret.group())
# 使用\d进行匹配
ret = re.match("神州\d号","神州1号发射成功")
print(ret.group())
ret = re.match("神州\d号","神州2号发射成功")
print(ret.group())
ret = re.match("神州\d号","神州3号发射成功")
print(ret.group())
运行结果:
神州1号
神州2号
神州3号
神州1号
神州2号
神州3号
三、匹配多个字符
匹配多个字符的相关格式:
字符 | 功能 |
---|---|
* | 匹配前一个字符出现0次或者无限次,即可有可无 |
+ | 匹配前一个字符出现1次或者无限次,即至少有1次 |
? | 匹配前一个字符出现1次或者0次,即要么有1次,要么没有 |
{m} | 匹配前一个字符出现m次 |
{m,n} | 匹配前一个字符出现从m到n次 |
##{m,} 加上逗号,一个字符出现m到无限次
示例1:*
需求:匹配出,一个字符串第一个字