当前位置: 首页 > news >正文

【时时三省】Python 语言----正则表达式

山不在高,有仙则名。水不在深,有龙则灵。

                                                                                                                ----CSDN 时时三省

目录

 1,介绍

2,常见的正则表达式符号及其意义:

1. 普通字符

2. 元字符

2.1 锚点

2.2 量词

2.3 字符集

2.4 特殊字符

3. 预定义字符集


 1,介绍

        正则表达式(Regular Expression)是一种强大的文本匹配工具,用于在字符串中搜索、匹配和替换特定的模式。正则表达式由普通字符和特殊字符(元字符)组成,这些元字符赋予正则表达式其强大的功能。

2,常见的正则表达式符号及其意义:

1. 普通字符


- **普通字符**:如字母、数字和标点符号,匹配它们自身。
  - 示例:`a` 匹配字符 `a`。
  - 示例:`123` 匹配字符串 `123`。

2. 元字符


元字符具有特殊的意义,用于定义复杂的匹配规则。

2.1 锚点


- **`^`**:匹配字符串的开始。
  - 示例:`^Hello` 匹配以 `Hello` 开头的字符串。
- **`$`**:匹配字符串的结束。
  - 示例:`world$` 匹配以 `world` 结尾的字符串。

2.2 量词


- **`*`**:匹配前面的字符零次或多次。
  - 示例:`a*` 匹配 `a` 出现零次或多次,如 `""`、`"a"`、`"aa"`。
- **`+`**:匹配前面的字符一次或多次。
  - 示例:`a+` 匹配 `a` 出现一次或多次,如 `"a"`、`"aa"`。
- **`?`**:匹配前面的字符零次或一次。
  - 示例:`a?` 匹配 `a` 出现零次或一次,如 `""`、`"a"`。
- **`{n}`**:匹配前面的字符恰好 `n` 次。
  - 示例:`a{3}` 匹配 `a` 出现 3 次,如 `"aaa"`。
- **`{n,}`**:匹配前面的字符至少 `n` 次。
  - 示例:`a{2,}` 匹配 `a` 出现 2 次或更多,如 `"aa"`、`"aaa"`。
- **`{n,m}`**:匹配前面的字符至少 `n` 次,但不超过 `m` 次。
  - 示例:`a{1,3}` 匹配 `a` 出现 1 到 3 次,如 `"a"`、`"aa"`、`"aaa"`。

2.3 字符集


- **`[]`**:匹配括号内的任意一个字符。
  - 示例:`[abc]` 匹配 `a`、`b` 或 `c`。
  - 示例:`[a-z]` 匹配任意小写字母。
  - 示例:`[0-9]` 匹配任意数字。
- **`[^...]`**:匹配不在括号内的任意一个字符。
  - 示例:`[^abc]` 匹配除 `a`、`b` 和 `c` 之外的任意字符。
  - 示例:`[^a-z]` 匹配任意非小写字母的字符。

2.4 特殊字符


- **`.`**:匹配任何单个字符(除换行符外)。
  - 示例:`a.b` 匹配 `a` 和 `b` 之间有任意一个字符,如 `"a1b"`、`"a b"`。
- **`\`**:转义字符,用于匹配元字符或特殊字符。
  - 示例:`\.` 匹配字符 `.`。
  - 示例:`\d` 匹配任意数字字符。
  - 示例:`\w` 匹配任意字母数字字符。
  - 示例:`\s` 匹配任意空白字符。
- **`|`**:表示逻辑“或”。
  - 示例:`a|b` 匹配 `a` 或 `b`。
- **`()`**:分组,用于捕获匹配的部分。
  - 示例:`(ab)+` 匹配一个或多个 `ab`,如 `"ab"`、`"abab"`。

3. 预定义字符集


- **`\d`**:匹配任意数字字符(0-9)。
- **`\D`**:匹配任意非数字字符。
- **`\w`**:匹配任意字母数字字符(a-z, A-Z, 0-9, `_`)。
- **`\W`**:匹配任意非字母数字字符。
- **`\s`**:匹配任意空白字符(空格、制表符、换行符等)。
- **`\S`**:匹配任意非空白字符。

示例代码

import re

text = "Hello, World! 123\nThis is a test."

# 匹配以 'Hello' 开头的字符串
match = re.search(r'^Hello', text, re.MULTILINE)
if match:
    print("匹配到:", match.group())

# 匹配以 'test' 结尾的字符串
match = re.search(r'test.$', text, re.MULTILINE)
if match:
    print("匹配到:", match.group())

# 匹配任意数字字符
matches = re.findall(r'\d', text)
print("数字字符:", matches)

# 匹配任意空白字符
matches = re.findall(r'\s', text)
print("空白字符:", matches)

# 匹配任意字母数字字符
matches = re.findall(r'\w', text)
print("字母数字字符:", matches)

# 匹配 'Hello' 或 'World'
matches = re.findall(r'Hello|World', text)
print("匹配到的单词:", matches)

# 匹配 'row:' 后面紧跟的单词
text = "row: name fs sf sf"
match = re.search(r'row:\s+(\w+)', text)
if match:
    print("匹配到的单词:", match.group(1))

输出
匹配到: Hello
匹配到: test.
数字字符: ['1', '2', '3']
空白字符: [' ', ' ', '\n', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
字母数字字符: ['H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd', '1', '2', '3', 'T', 'h', 'i', 's', 'i', 's', 'a', 't', 'e', 's', 't']
匹配到的单词: ['Hello', 'World']
匹配到的单词: name

相关文章:

  • 检测到目标URL存在http host头攻击漏洞
  • 北京市生成式人工智能大模型备案综合分析情况
  • 聚焦AI与大模型创新,紫光云如何引领云计算行业快速演进?
  • GoLand 标红但程序可正常运行:由符号索引缓存失效引起的假报错问题
  • 1 深入理解 DevOps 与 CI/CD:概念、流程及优势
  • 数据分析之python处理常用复杂转置数据
  • typescript开发心得
  • org.apache.ibatis Test
  • Pytorch深度学习框架60天进阶学习计划 - 第40天:工业缺陷检测(二)
  • Dubbo(45)如何排查Dubbo的序列化问题?
  • django相关面试题
  • 设计模式:代理模式 - 控制访问与增强功能的艺术
  • AutoGen深度解析:从核心架构到多智能体协作的完整指南
  • 【图片识别改名工具】如何识别图片中文字内容,并根据文字对图片批量重命名批量改名,基于WPF和腾讯OCR的完整实现
  • 【SQL Server 2017】封闭网络下,数据调研所有数据表实战(提效400%)
  • Python 实现的运筹优化系统数学建模详解(0-1规划指派问题)
  • 【人工智能】引爆智能时代的大模型伦理挑战:DeepSeek 如何应对偏见与隐私问题
  • 量子代理签名:量子时代的数字授权革命
  • ubuntu22.04 进入不了系统设置
  • 基于FreeRTOS和LVGL的多功能低功耗智能手表(APP篇)
  • wordpress免费网站模板/网络舆情监控
  • 品牌企业网站建设公司/国际军事形势最新消息
  • 网站上点击图片局部放大如何做/网络营销的公司有哪些
  • 网站多久需要维护/线上培训
  • 王野天 女演员/seo关键词seo排名公司
  • 电子商务网站建设与管理/优化大师下载安装