正则表达式中.* 和 .*?的区别

 

.*表示贪婪匹配;

.*?表示非贪婪匹配;

 

001、R语言中

> sub("a.*b", "", c("aabab","eabbe"))    ##.*表示贪婪匹配,只要满足条件就一直匹配
[1] ""   "ee"
> sub("a.*?b","",c("aabab","eabbe"))     ##.*?表示非贪婪匹配,只匹配满足条件一次
[1] "ab"  "ebe"

 

002、shell中 并不适用

复制代码
root@PC1:/home/test2# cat a.txt
aabab
eabbe
root@PC1:/home/test2# sed 's/a.*b//' a.txt       ##贪婪匹配

ee
root@PC1:/home/test2# cat a.txt
aabab
eabbe
root@PC1:/home/test2# sed 's/a.*?b//' a.txt
aabab
eabbe
root@PC1:/home/test2# sed 's/a.*\?b//' a.txt    ##加?仍然是贪婪匹配

ee
复制代码

 

posted @   小鲨鱼2018  阅读(2450)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-05-16 c语言 7-1
2020-05-16 vcftools 软件的 安装
点击右上角即可分享
微信分享提示