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

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

1. *

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

2. +

  • 含义:匹配前面的元素一次或者多次。
  • 示例:正则表达式 a+ 在字符串 "aaaa" 中,同样会匹配整个 "aaaa",不过它至少要匹配一次 a 字符。
  • 代码示例(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)
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)
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)
import re
text = "aaaa"
pattern = re.compile(r'a{2,3}')
result = pattern.search(text)
print(result.group())  # 输出: aaa

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

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

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


http://www.kler.cn/a/518135.html

相关文章:

  • Nginx入门学习
  • 数据标注开源框架 Label Studio
  • 基于SpringBoot的httpclient实现(高级版)
  • Java 大视界 -- Java 大数据中的自然语言生成技术与实践(63)
  • 【JWT】jwt实现HS、RS、ES、ED签名与验签
  • 力扣算法题——283.移动零【系统讲解】
  • Kotlin开发(三):编程趣事,变量、判断和循环的三角恋
  • C++ 复习总结记录十
  • transformers报错:‘GenerationConfig‘ object has no attribute ‘_eos_token_tensor‘
  • INCOSE需求编写指南-第1部分:介绍
  • 基于Hadoop的汽车大数据分析系统设计与实现【爬虫、数据预处理、MapReduce、echarts、Flask】
  • 【GO】Context
  • 亚博microros小车-原生ubuntu支持系列:11手指控制与手势识别
  • 活动回顾和预告|微软开发者社区 Code Without Barriers 上海站首场活动成功举办!
  • Queries Acceleration -Tuning- Tuning Execution 学习笔记
  • 在Android中通过JNI实现Java与C++的交互:Hello World示例
  • C++中static和const的区别和用法
  • leetcode——相交链表(java)
  • Spring Boot - 数据库集成02 - 集成JPA
  • DSP实验七 综合实验与考查