python正则表达式提取文本

人气:372 ℃/2022-12-10 11:46:23

python正则表达式怎么提取文本呢?不知道的小伙伴来看看小编今天的分享吧!

python正则表达式提取文本有两种方法:

方法一:

eight_date = re.compile(r"正则式")

str1 = re.search(eight_date, "文本内容").group(0)

方法二:

str1 = re.search(r"正则式","文本内容").group(0)

拓展资料:

什么是python正则表达式?

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念,Python同样不例外,利用了正则表达式,我们想要从返回的页面内容提取出我们想要的内容就易如反掌了。

正则表达式的大致匹配过程是:

1.依次拿出表达式和文本中的字符比较,

2.如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。

3.如果表达式中有量词或边界,这个过程会稍微有一些不同。

以上就是小编今天的分享了,希望可以帮助到大家。

python正则提取中间文本

python 自动化数据提取之正则表达式

>>>> 前 言

我们在做接口自动化的时候,处理接口依赖的相关数据时,通常会使用正则表达式来进行提取相关的数据,今天在这边和大家聊聊如何在python中使用正则表达式。

正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),是计算机科学的一个概念。

正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。按某种规则匹配的表达式被称之为正则表达式,在python使用正则表达式,可以使用官方库re来实现,学习re模块之前,我们先来了解一下正则表达式的基本语法。

>>>> 正 则 表 达 式 语 法

NO.1表示单字符

单字符:即表示一个单独的字符,比如匹配数字用\d ,匹配非数字使用\D,具体规则如下:

字符

功能

.

匹配任意1个字符(除了\n)

[7a ]

匹配[ ]中列举的字符,这里就是匹配7或者a这两个字符其中的一个

\d

匹配数字,即0-9

\D

匹配非数字,即不是数字

\s

匹配空白,即 空格,tab键

\S

匹配非空白

\w

匹配单词字符,即a-z、A-Z、0-9、_

\W

匹配非单词字符

NO..2表示数量

如果要匹配某个字符多次,就可以在字符后面加上数量进行表示,具体规则如下:

字符

功能

*

匹配前一个字符出现0次或者无限次,即可有可无

匹配前一个字符出现1次或者无限次,即至少有1次

?

匹配前一个字符出现1次或者0次,即要么有1次,要么没有

{m}

匹配前一个字符出现m次

{m,}

匹配前一个字符至少出现m次

{m,n}

匹配前一个字符出现从m到n次

NO.3表示边界

字符

功能

^

匹配字符串开头

$

匹配字符串结尾

\b

匹配单词的边界

\B

匹配非单词边界

NO.4匹配分组

字符

功能

|

匹配左右任意一个表达式

(ab)

将括号中字符作为一个分组

\num

引用分组num匹配到的字符串

(?P<name>)

分组起别名

(?P=name)

引用别名为name分组匹配到的字符串

NO.5

贪婪模式

贪婪模式:Python里数量词默认是贪婪的,总是尝试匹配尽可能多的字符;

如下案例:有一个字符串s,我们需要在字符串中匹配3个以上的数字,字符串中数字有8个,贪婪模式会尽可能匹配更多字符,3个以上,8个也是3个以上,那么这里匹配的结果就是8个数字。

非贪婪模式:总是尝试匹配尽可能少的字符,在"*","?"," ","",后面加上?,可以关闭贪婪模式

关闭贪婪模式之后,尽可能获取更少的,如下,只获取到最前面的3个数值(至少3个,非贪婪就是最前面的3个)

>>>> r e 模 块 的 使 用

在python中使用正则表达式,需要用到re模块来进行操作,这边给大家介绍几个re模块中常用的方法。

No.1 re.match函数

No.2 re.search 方法

re.match与re.search的区别

No.3 findall 方法

注意:match 和 search 是匹配一个结果, findall 匹配处所有符合规则的结果。

No.4 sub 方法

替换字符串中的某些字符,可以用正则表达式来匹配被选子串。

re.sub(pattern, repl, string, count=0 )

>>>> 案 例 演 示

需求:整个正则表达式提取如下接口登录之后返回的token值。

接口地址:http://47.112.233.130/users/login/请求参数:返回结果:

{'refresh': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTY1Mzk4MzMyNSwiaWF0IjoxNjUzODk2OTI1LCJqdGkiOiI2NTE2MTE0OGFhMDY0NWNjYWY2ZWE4YmYzYzY1YjE1ZSIsInVzZXJfaWQiOjJ9.fMkJfOdhczbr1MqvYE5b0qYlC5GewBlFZbrteMOLUv0', 'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjUzOTgzMzI1LCJpYXQiOjE2NTM4OTY5MjUsImp0aSI6ImQ3Nzg1ZjY0YTk2YzQwYzliZDcwMmUxMDgzNjVkNWU5IiwidXNlcl9pZCI6Mn0.UNmLRQsXnZBltgL7QQVuBON2UEBQav87NSGy5Iqbnws'}实现代码

import requestsimport re# 登录接口login_url = 'http://47.112.233.130:8888/users/login/'# 请求登录接口,进行登录params = { "username": "test", "password": "123456"}response = requests.post(url=login_url, json=params)#使用正则表达式提取tokenresult = re.search(r'token":"(. ?)"',response.text)token = result.group(1)

上述案例中关于token的提取我们使用的是正则表达式,除了正则之外,进行数据提取还有很多方式可以实现,比如jsonpath,xpath等等。jsonpath只能在接口返回的是json格式数据的情况下使用,xpath适用于接口返回的是XML或者HTML时使用。

推荐

首页/电脑版/网名
© 2025 NiBaKu.Com All Rights Reserved.