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

发布于:2025-04-10 ⋅ 阅读:(47) ⋅ 点赞:(0)

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

                                                                                                                ----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


网站公告

今日签到

点亮在社区的每一天
去签到