Python-正则表达式 一次搞懂

概念解释

正则表达式(Regular Expressions,简称regex或regexp)是一种用于匹配字符串的模式。它是一种强大的文本处理工具,可以用来查找、替换和验证字符串。正则表达式由特定的字符和符号组成,这些字符和符号定义了匹配规则。

在Python中,正则表达式通过内置的 re 模块来实现。

基本语法

  1. 字符匹配

    • .:匹配任意单个字符(除换行符外)。
    • \d:匹配任意一个数字(0-9)。
    • \D:匹配任意一个非数字字符。
    • \w:匹配任意一个字母、数字或下划线。
    • \W:匹配任意一个非字母、数字或下划线字符。
    • \s:匹配任意一个空白字符(空格、制表符、换行符等)。
    • \S:匹配任意一个非空白字符。
  2. 量词

    • *:匹配前面的字符0次或多次。
    • +:匹配前面的字符1次或多次。
    • ?:匹配前面的字符0次或1次。
    • {n}:匹配前面的字符恰好n次。
    • {n,}:匹配前面的字符至少n次。
    • {n,m}:匹配前面的字符至少n次,最多m次。
  3. 边界匹配

    • ^:匹配字符串的开头。
    • $:匹配字符串的结尾。
    • \b:匹配单词边界。
    • \B:匹配非单词边界。
  4. 分组和捕获

    • (...):捕获匹配的子字符串。
    • (?:...):非捕获分组。
    • (?P<name>...):命名捕获分组。
  5. 特殊字符

    • []:字符集,匹配方括号内的任意一个字符。
    • [^]:否定字符集,匹配不在方括号内的任意一个字符。
    • |:或,匹配两个或多个表达式中的一个。

常用方法

  1. re.search(pattern, string):在字符串中搜索匹配正则表达式的第一个位置,并返回一个匹配对象。
  2. re.match(pattern, string):从字符串的开头开始匹配正则表达式,如果匹配成功,返回一个匹配对象。
  3. re.findall(pattern, string):返回字符串中所有匹配正则表达式的子字符串,返回一个列表。
  4. re.finditer(pattern, string):返回一个迭代器,包含所有匹配的匹配对象。
  5. re.sub(pattern, repl, string):在字符串中替换所有匹配正则表达式的子字符串。
  6. re.split(pattern, string):根据正则表达式分割字符串,返回一个列表。

编程示例

示例1:基本匹配
import re

text = "Hello, World!"
pattern = r"Hello"

match = re.search(pattern, text)
if match:
    print("匹配成功:", match.group())
else:
    print("匹配失败")
示例2:匹配数字
import re

text = "There are 123 apples and 456 oranges."
pattern = r"\d+"

matches = re.findall(pattern, text)
print("匹配的数字:", matches)
示例3:替换字符串
import re

text = "Hello, World!"
pattern = r"World"
repl = "Python"

new_text = re.sub(pattern, repl, text)
print("替换后的字符串:", new_text)
示例4:分组和捕获
import re

text = "Name: Alice, Age: 30"
pattern = r"Name: (\w+), Age: (\d+)"

match = re.search(pattern, text)
if match:
    name = match.group(1)
    age = match.group(2)
    print("名字:", name)
    print("年龄:", age)
示例5:命名捕获分组
import re

text = "Name: Alice, Age: 30"
pattern = r"Name: (?P<name>\w+), Age: (?P<age>\d+)"

match = re.search(pattern, text)
if match:
    name = match.group("name")
    age = match.group("age")
    print("名字:", name)
    print("年龄:", age)

原始字符串(r-string)

在Python中,原始字符串(raw string)是一种特殊的字符串,用前缀 rR 表示。原始字符串中的反斜杠 \ 不会被转义,而是被视为普通字符。这在处理正则表达式时非常有用,因为正则表达式中经常使用反斜杠。

pattern = r"\d+"  # 原始字符串,\d 不会被转义

正则表达式的应用场景

  1. 数据验证:验证用户输入的格式是否正确,如电子邮件地址、电话号码等。
  2. 文本处理:从大段文本中提取特定信息,如从网页中提取链接、从日志文件中提取错误信息等。
  3. 字符串替换:根据特定模式替换字符串中的内容。
  4. 数据清洗:清洗和标准化数据,去除不必要的字符或格式化数据。

总结

正则表达式是一种强大的文本处理工具,通过 re 模块,Python提供了丰富的正则表达式功能。通过上述示例,我们可以看到正则表达式在字符串匹配、查找、替换等方面的应用。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值