re 正则提取部分数据_正则表达式 提取数据

时间:2024-10-22 22:27:25

正则表达式

1. 正则表达式概念

正则表达式就是记录文本规则的代码

2. 正则表达式的样子

0\d{2}-\d{8} 这个就是一个正则表达式,表达的意思是匹配的是座机号码

3. 正则表达式的特点

  • 正则表达式的语法很令人头疼,可读性差

  • 正则表达式通用行很强,能够适用于很多编程语言

1. re模块的使用过程

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

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

2. re模块示例

    #coding=utf-8    import re    result = ("hello","")    result.group()

运行结果为:

hello
定义

用事先定义好的一些特定字符、及这些特定字符的组合,组成一个规则字符串,这个规则字符串用来表达对字符串的一种过滤逻辑。

常见语法

字符

语法 说明 表达式案例 完整匹配字符串
一般字符 匹配自身 abc abc
. 匹配任意除换行符\n外的字符。在DOTALL模式中也能匹配换行符 abc
\ 转义字符,使后一个字符表示字符本身。
[...] 选取字符范围 a[bcd]e abe 或 ace 或 ade

预定义字符集(可以写在字符集[...]中)

语法 说明 表达式案例 完整匹配字符串
\d 数字:[0-9] a\dc a1c
\D 非数字:0-9 a\Dc abc
\s 空白字符:[\t\r\n\f\v] a\sc a c
\S 非空白字符:\t\r\n\f\v a\Sc abc
\w 单词字符:[A-Za-z0-9_] a\wc abc
\W 非单词字符:A-Za-z0-9_ a\Wc a c

数量词(用在字符或(...)之后)

语法 说明 表达式案例 完整匹配字符串
* 匹配前一个字符0次或无限次。 abc* abccc
+ 匹配前一个字符1次或无限次。 abc+ abccc
? 匹配前一个字符0次或1次。 abc? abc 或 ab
{m} 匹配前一个字符m次。 ab{2}c abbc

匹配单个字符

示例1:

#coding=utf-8import reret = (".","M")print(ret.group())ret = ("","too")print(ret.group())ret = ("","two")print(ret.group())

运行结果:

Mtootwo

示例2:[]

import re# 如果hello的首字符小写,那么正则表达式需要小写的hret = ("h","hello Python")print(ret.group())# 如果hello的首字符大写,那么正则表达式需要大写的Hret = ("H","Hello Python")print(ret.group())# 大小写h都可以的情况ret = ("[hH]","hello Python")print(ret.group())ret = ("[hH]","Hello Python")print(ret.group())ret = ("[hH]ello Python","Hello Python")print(ret.group())# 匹配09第一种写法ret = ("[0123456789]Hello Python","7Hello Python")print(ret.group())# 匹配09第二种写法ret = ("[0-9]Hello Python","7Hello Python")print(ret.group())ret = ("[0-35-9]Hello Python","7Hello Python")print(ret.group())# 下面这个正则不能够匹配到数字4,因此ret为Noneret = ("[0-35-9]Hello Python","4Hello Python")# print(ret.group())

运行结果:

hHhHHello Python7Hello Python7Hello Python7Hello Python

示例3:\d

import re# 普通的匹配方式ret = re.match("嫦娥1号","嫦娥1号发射成功")print(())ret = re.match("嫦娥2号","嫦娥2号发射成功")print(())ret = re.match("嫦娥3号","嫦娥3号发射成功")print(())# 使用\d进行匹配ret = re.match("嫦娥\d号","嫦娥1号发射成功")print(())ret = re.match("嫦娥\d号","嫦娥2号发射成功")print(())ret = re.match("嫦娥\d号","嫦娥3号发射成功")print(())

运行结果:

嫦娥1号嫦娥2号嫦娥3号嫦娥1号嫦娥2号嫦娥3

示例4:\D

import rematch_obj = ("\D", "f")if match_obj:    # 获取匹配结果    print(match_obj.group())else:    print("匹配失败")

运行结果:

f

示例5:\s

import re# 空格属于空白字符match_obj = re.match("hello\sworld", "hello world")if match_obj:    result = match_obj.group()    print(result)else:    print("匹配失败")# \t 属于空白字符match_obj = re.match("hello\sworld", "hello\tworld")if match_obj:    result = match_obj.group()    print(result)else:    print("匹配失败")

运行结果:

hello worldhello world

示例6:\S

import rematch_obj = re.match("hello\Sworld", "hello&world")if match_obj:    result = match_obj.group()    print(result)else:    print("匹配失败")match_obj = re.match("hello\Sworld", "hello$world")if match_obj:    result = match_obj.group()    print(result)else:    print("匹配失败")

运行结果:

hello&world  hello$world

示例7:\w

import re# 匹配非特殊字符中的一位match_obj = ("\w", "A")if match_obj:    # 获取匹配结果    print(match_obj.group())else:    print("匹配失败")

执行结果:

A

示例8:\W

# 匹配特殊字符中的一位match_obj = re.match("\W", "&")if match_obj:    # 获取匹配结果    print(match_obj.group())else:    print("匹配失败")

执行结果:

&

想要了解更多关于IT相关的信息,欢迎关注本公众号