python 正则表达式详解大全

python 正则表达式详解大全

Python 正则表达式是一种强大的工具,可用于对字符串进行匹配和搜索。在本指南中,我们将介绍 Python 正则表达式的所有内容,包括基本概念、语法、元字符等。

  1. 概述

正则表达式用于描述字符集合的模式,常被用于文本处理和数据分析。在 Python 中,可以使用 re 模块进行正则表达式的处理。 re 模块提供了一组用于编写正则表达式和处理和操作它们的函数。

  1. 常用语法

a. 基本模式: 正则表达式模式由普通文本和元字符两部分组成。普通文本是要匹配的字符或字符串,元字符是用于特殊意义的字符序列。

b. 特殊字符: 在正则表达式中,有一些特殊字符,它们有特殊的含义,表示一些特殊的字符或字符集合。例如,元字符 “.” 匹配任何字符,元字符 “^” 匹配字符串的开头,元字符 “$” 匹配字符串的结尾等。

c. 字符集合: 在正则表达式中,可以使用字符集合描述一组字符。例如,“[abc]” 匹配单个字符 “a”、“b” 或 “c”。

d. 重复匹配: 在正则表达式中,可以指定一个模式重复出现的次数。例如,“a{3}” 匹配连续出现 3 次的字符 “a”,“a{3,}” 匹配至少出现 3 次的字符 “a”,“a{3,5}” 匹配 3 至 5 次的字符 “a”。

e. 逻辑运算: 在正则表达式中,可以使用逻辑运算符"|“表示“或”关系,使用括号”()"来分组。

f. 匹配结果: 在 Python 中,可以使用 re 模块的函数对字符串进行匹配。如果匹配成功,会返回一个 Match 对象。Match 对象包含有关匹配结果的信息,例如匹配的起始位置和结束位置、匹配的字符串等。

  1. 正则表达式实例

以下是一些常见的正则表达式示例:

a. 匹配任意字符: . 匹配任意一个字符。

b. 匹配字符集合: [abc] 匹配字符 “a”、“b” 或 “c”。

c. 匹配字符范围: [a-z] 匹配任意一个小写字母。

d. 匹配数字: \d 匹配任意一个数字,相当于 [0-9]。

e. 匹配非数字: \D 匹配任意一个非数字字符,相当于 [^0-9]。

f. 匹配空白字符: \s 匹配任意一个空白字符,包括空格、制表符、换行符等。

g. 匹配非空白字符: \S 匹配任意一个非空白字符。

h. 匹配单词字符: \w 匹配任意一个单词字符,包括字母、数字、下划线等。

i. 匹配非单词字符: \W 匹配任意一个非单词字符。

j. 匹配字符串开头: ^ 匹配字符串的开头。

k. 匹配字符串结尾: $ 匹配字符串的结尾。

l. 匹配重复字符: * 表示匹配前一个字符出现 0 次或多次;+ 表示匹配前一个字符出现 1 次或多次;? 表示匹配前一个字符出现 0 次或 1 次。

m. 匹配固定长度字符: {m} 表示匹配前一个字符出现 m 次;{m,n} 表示匹配前一个字符出现 m 至 n 次。

n. 匹配分组: ( ) 表示匹配一个字符或一组字符,并将其作为一个分组。

  1. 正则表达式示例代码

    re.matchre.search区别

    re.match和re.search都是python的正则表达式匹配函数,但是在匹配的过程中存在一些区别:
    
    1. re.match只会从字符串的开始位置进行匹配,而re.search则会在整个字符串中查找第一个匹配项。
    
    2. 如果在字符串中匹配成功,re.match就返回一个匹配对象,否则返回None。而re.search无论是否匹配都会返回一个匹配对象,如果没有找到匹配项,则返回None。
    
    3. re.search的效率通常比re.match要高一些,因为re.match需要从头开始匹配,并且只在第一个位置匹配成功时才会停止,而re.search可以在字符串的任何地方匹配成功。
    
    4. 在使用re.match和re.search时,都可以加入是否区分大小写的参数,例如re.match("pattern", "string", re.IGNORECASE)可以忽略pattern和string中字母的大小写。
    

以下是一些使用正则表达式的实例代码:

a. 匹配邮箱地址:

import re

email = 'example@email.com'
pattern = '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}'
# [a-zA-Z0-9._%+-] 匹配 example,@[a-zA-Z0-9.-] 匹配 @email,\.匹配.,[a-zA-Z]{2,4} 匹配 com
result = re.match(pattern, email)
if result:
    print('匹配成功')
else:
    print('匹配失败')

b. 匹配手机号码:

import re

phone = '13812345678'
pattern = '^1[3456789]\d{9}$'
# ^1:匹配第一个,[3456789]:匹配第二个,$:表示倒数第一个开始,{9}:抓取9位数,\d表示0-9数值也就是[0-9]
result = re.match(pattern, phone)
if result:
    print('匹配成功')
else:
    print('匹配失败')

c. 按行读取文件并匹配关键字:

import re

pattern = 'error|fail'
with open('log.txt', 'r') as f:
    for line in f:
        result = re.search(pattern, line)
        if result:
            print(line)
  1. 总结

本指南介绍了 Python 正则表达式的基本概念、语法、元字符等内容。正则表达式是 Python 数据分析和文本处理中常用的工具,熟练掌握正则表达式可以大大提高程序的处理效率和准确性。

这段代码使用正则表达式在 response.text 中查找符合模式'window.__SEARCH_RESULT__ = (.*?)</script>'的字符串。其中,

'window.__SEARCH_RESULT__ = ' 是模式中的字符串部分,表示需要匹配该字符串开始位置处的内容。

‘(.*?)’ 是模式中的通配符部分,表示需要匹配任意字符任意次数,且尽可能少匹配,直到遇到下一个字符串部分 ‘’。

‘’ 是模式中的字符串部分,表示需要匹配该字符串结束位置前的内容。找到的匹配结果包含在一个列表中,通过re.findall()函数返回。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值