正则表达式中常见的贪婪词

1. *

  • 含义:匹配前面的元素零次或者多次。
  • 示例 :对于正则表达式 a*,在字符串 "aaaa" 中,它会匹配整个 "aaaa",因为它会尽可能多地匹配 a 字符。
  • 代码示例(Python)
python 复制代码
import re
text = "aaaa"
pattern = re.compile(r'a*')
result = pattern.search(text)
print(result.group())  # 输出: aaaa

2. +

  • 含义:匹配前面的元素一次或者多次。
  • 示例 :正则表达式 a+ 在字符串 "aaaa" 中,同样会匹配整个 "aaaa",不过它至少要匹配一次 a 字符。
  • 代码示例(Python)
python 复制代码
import re
text = "aaaa"
pattern = re.compile(r'a+')
result = pattern.search(text)
print(result.group())  # 输出: aaaa

3. ?

  • 含义:匹配前面的元素零次或者一次。
  • 示例 :正则表达式 colou?r 可以匹配 "color""colour"u? 表示 u 这个字符可以出现零次或者一次。
  • 代码示例(Python)
python 复制代码
import re
text1 = "color"
text2 = "colour"
pattern = re.compile(r'colou?r')
result1 = pattern.search(text1)
result2 = pattern.search(text2)
print(result1.group())  # 输出: color
print(result2.group())  # 输出: colour

4. {n,}

  • 含义 :匹配前面的元素至少 n 次。
  • 示例 :正则表达式 a{2,} 在字符串 "aaaa" 中,会匹配整个 "aaaa",因为它要求 a 至少出现 2 次。
  • 代码示例(Python)
python 复制代码
import re
text = "aaaa"
pattern = re.compile(r'a{2,}')
result = pattern.search(text)
print(result.group())  # 输出: aaaa

5. {n,m}

  • 含义 :匹配前面的元素至少 n 次,但不超过 m 次。
  • 示例 :正则表达式 a{2,3} 在字符串 "aaaa" 中,会匹配前三个 a,即 "aaa",因为它尽量在 2 到 3 次的范围内进行最大匹配。
  • 代码示例(Python)
python 复制代码
import re
text = "aaaa"
pattern = re.compile(r'a{2,3}')
result = pattern.search(text)
print(result.group())  # 输出: aaa

贪婪字符会尽可能多地去匹配符合条件的字符,直到无法再匹配为止,因此会导致回溯问题,因此在实际应用中,应该避免使用贪婪字符。

如果想让贪婪字符变为非贪婪模式,只需在其后加上 ? 即可,如:*?+???{n,}?{n,m}?,

此模式将会尽可能少的去匹配字符,但是可能无法达到预期结果,大家酌情选择。

相关推荐
深圳恒讯3 分钟前
越南服务器 ping 值多少?
运维·服务器
ShineWinsu3 分钟前
对于Linux:内核是如何组织管理IPC资源的解析
linux·服务器·c++·面试·笔试·线程·ipc
terry6004 分钟前
2026企业级携号转网查询标准:论实时数据同步与高并发承载设计
java·大数据·人工智能·json·信息与通信·数据库架构
caimouse7 分钟前
Reactos 第 5 章 进程与线程 — 5.3 系统调用 NtCreateProcess()
服务器·开发语言
Volunteer Technology10 分钟前
SpringSecurity中的权限管理
java·数据库·servlet
ch.ju12 分钟前
Java程序设计(第3版)第四章——继承的调用
java·开发语言
摇滚侠14 分钟前
Maven 的 <packaging>pom</packaging> 都有哪些值
java·maven
段ヤシ.18 分钟前
回顾Java知识点,面试题汇总Day13:数据库MySQL(持续更新)
java·数据库·mysql
W_LuYi18523 分钟前
Tauri + Rust + Vue 3 打造极速轻量桌面应用
java·开发语言·vue.js·rust
feng_you_ying_li29 分钟前
Linux之线程同步:条件变量和两种生产消费模型
linux·运维·服务器