正则表达式中.* 和 .*?的区别
.*表示贪婪匹配;
.*?表示非贪婪匹配;
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