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

正则表达式:贪婪匹配与非贪婪匹配

正则表达式:贪婪匹配与非贪婪匹配

非贪婪匹配

.*?这三个字符的组合就是非贪婪匹配,意思是匹配任意字符直到遇到第一个后面指定的字符,比如.*?_就表示匹配任意字符直到碰到下划线,还可以组合^来表示从头匹配,比如^.*?_就是从头开始匹配任意字符直到遇到第一个下划线。

举个例子

x <- c("apple_banana_cherry", "dog_cat", "red_blue_green")

# 使用 sub() 函数进行替换

result <- sub("^.*?_", "", x)

结果应该是 "banana_cherry" "cat" "blue_green"

^.*?_匹配到第一个下划线之前的所有字符,^表示从开头匹配。

贪婪匹配

.*在正则表达式中表示贪婪匹配,其中.是一个元字符,在正则表达式里,它代表除换行符之外的任意单个字符。* 是一个量词,它表示前面的元素(这里指 .)可以出现零次或多次。

所以,.* 组合起来的意思是匹配任意数量(包括零个)的任意字符。它会尽可能多地匹配字符,也就是所谓的 “贪婪匹配”。

举个例子

x <- c("apple_banana_cherry", "dog_cat", "red_blue_green")

result <- sub(".*_", "", x)

因为 sub(".*_", "", x)函数表示把指定部分替换成空字符也就是删除正则表达式匹配到的部分,后面有一个_,.*_就是匹配到最后一个_,前面的所有字符。

此时的result应该是"cherry" "cat" "green"

相关文章:

  • [贪心算法] 摆动序列
  • 佰泰盛世公司推出最新低成本的DSP功放音箱解决方案
  • 仿RabbitMQ的消息队列
  • 数据集格式转换——json2txt、xml2txt、txt2json【复制就能用】
  • 专栏特辑--如何查询Essential Science Indicators (ESI)- 高被引论文--我的文章和高引文章的差距
  • ccfcsp3402矩阵重塑(其二)
  • 2025-03-18 学习记录--C/C++-PTA 习题4-9 打印菱形图案
  • Python 阶段一综合案例之质数判断算法
  • AGI大模型(8):提示词的安全与防护
  • 无人机吊舱模块更换技术难点分析!
  • Redis-锁-商品秒杀防止超卖
  • docker安装rabbitmq
  • Ubuntu24.04 启动后突然进入tty,无法进入图形界面
  • AI 技术在智慧农业中的应用实践
  • 前缀和 之 哈希表 之 和 的奇偶与倍数
  • MySQL InnoDB引擎的锁机制详解
  • 蓝桥杯每日一题
  • 汽车PKE无钥匙进入系统一键启动系统定义与原理
  • 需求文档(PRD,Product Requirement Document)的基本要求和案例参考:功能清单、流程图、原型图、逻辑能力和表达能力
  • 晶艺代理,100V3.5A高耐压LA1823完全替换MP9487--启烨科技有限公司
  • 国常会:研究深化国家级经济技术开发区改革创新有关举措等
  • 中国词学研究会原会长、华东师大教授马兴荣逝世,享年101岁
  • 图忆|红场阅兵:俄罗斯30年来的卫国战争胜利日阅兵式
  • 壹基金发布2024年度报告,公益项目惠及937万人次
  • 98年服装“厂二代”:关税压力下,我仍相信中国供应链|湃客Talk
  • 黄玮接替周继红出任国家体育总局游泳运动管理中心主任