【Python】正则

特殊字符转义

以下字符都需要用 反斜线(\)来进行特殊字符的转义。

\n - 换行符
\t - 制表符
\ - 反斜线本身
. - 点号(任意单个字符)
星号(0次或多次重复前面的元素)
加号(1次或多次重复前面的元素)
? - 问号(零次或一次重复前面的元素)
[] - 方括号内的任何字符集合
() - 分组操作符
{} - 花括号内指定数量的重复次数

起因,python正则匹配,从'你好aaa+'匹配‘aaa+’,我就想完整的匹配aaa+,但是实际效果是'你好a'这种的也能匹配上。

debug发现原来+在正则中是特殊字符。如果要匹配 + 字符本身,你需要使用反斜杠 \ 对它进行转义。即遇见 + 的pattern用 /+ 来替换,

modified_string = original_string.replace("+", "/+")

‘aaa+’被解释为:匹配前面的字符 'aaa' 一次或多次。

import re

re.search('aaa+', 'a') # none

re.search('aaa+', 'aaab') # <_sre.SRE_Match object; span=(0, 3), match='aaa'>

re.search('aaa+', 'ab') # none

re.search('aaa+', 'aab') # none

re.search('aaa+', 'aaaaaab')  # <_sre.SRE_Match object; span=(0, 6), match='aaaaaa'>

re.match() 与 re.search() 的区别

1. `re.match()`:
   - `re.match()` 用于从字符串的起始位置开始匹配正则表达式。
   - 如果匹配成功,`re.match()` 返回一个匹配对象;如果匹配失败,它返回 `None`。
   - 它只匹配字符串的第一个子串,也就是说,它不会扫描整个字符串,而是在找到第一个匹配项后停止。

2. `re.search()`:
   - `re.search()` 用于在字符串中扫描正则表达式,并返回第一个匹配项。
   - 如果匹配成功,`re.search()` 返回一个匹配对象;如果匹配失败,它返回 `None`。
   - 它会扫描整个字符串,直到找到第一个匹配项为止。

简而言之,`re.match()` 通常用于检查字符串的起始部分是否与正则表达式匹配,而 `re.search()` 用于在整个字符串中查找匹配项。下面是一个示例,展示这两个函数的区别:

总结:search()更符合需求。

import re

# 示例字符串
text = "这是一个测试字符串,包含多个部分。"

# 正则表达式
pattern1 = r'测试'
pattern2 = r'多个部分'

# 使用re.match()
match1 = re.match(pattern1, text)
match2 = re.match(pattern2, text)

print(f"match1: {match1}") # match1: None
print(f"match2: {match2}") # match2: None


# 使用re.search()
search1 = re.search(pattern1, text)
search2 = re.search(pattern2, text)

print(f"search1: {search1}") # search1: <_sre.SRE_Match object; span=(4, 6), match='测试'>
print(f"search2: {search2}") # search2: <_sre.SRE_Match object; span=(12, 16), match='多个部分'>

re.findall()

matches = re.findall(pattern, str)

re.sub()

# 将str中匹配到的pattern部分替换为''

new_str = re.sub(pattern, '', str)

实践1:匹配12g

pattern = r"\d+\s*[Gg][Bb]?"  # 256g, 12g

实践2:匹配12g+12g, 12gb+12gb, 12g+1

pattern = r"\d+\s*[g]?[b]?\+\d+\s*[Gg]?[Bb]?"

相关推荐

  1. Python

    2024-03-11 13:52:02       55 阅读
  2. Python表达式

    2024-03-11 13:52:02       48 阅读
  3. Python

    2024-03-11 13:52:02       51 阅读
  4. Python 表达式

    2024-03-11 13:52:02       41 阅读
  5. python表达式

    2024-03-11 13:52:02       41 阅读
  6. Python表达式

    2024-03-11 13:52:02       31 阅读
  7. Python-表达式】

    2024-03-11 13:52:02       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 13:52:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 13:52:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 13:52:02       87 阅读
  4. Python语言-面向对象

    2024-03-11 13:52:02       96 阅读

热门阅读

  1. [蓝桥杯 2018 省 B] 递增三元组

    2024-03-11 13:52:02       48 阅读
  2. # 关于virt-cat命令之-c|--connect参数问题

    2024-03-11 13:52:02       50 阅读
  3. openssl3.2 - 官方demo学习 - encode - rsa_encode.c

    2024-03-11 13:52:02       43 阅读
  4. 数据标准化方法

    2024-03-11 13:52:02       44 阅读
  5. linux系统Docker容器Dockerfile示例

    2024-03-11 13:52:02       47 阅读
  6. RabbitMQ实战:docker compose 搭建RabbitMQ

    2024-03-11 13:52:02       42 阅读
  7. Neovim基本介绍

    2024-03-11 13:52:02       46 阅读
  8. 单机Kubenetes集群——KinD安装

    2024-03-11 13:52:02       47 阅读
  9. 电商API接口与数据分析、数据挖掘的结合

    2024-03-11 13:52:02       44 阅读
  10. jvm八股

    jvm八股

    2024-03-11 13:52:02      40 阅读
  11. 微信小程序-自定义简易顶部导航

    2024-03-11 13:52:02       40 阅读