正则表达式中.和*的区别
1、
.表示匹配任意字符一次;
*表示匹配前一个字符0次或任意多次;
001、R语言中:
> sub("a.c","",c("abcd", "sdacd", "addfcdf")) ## .表示任意一个字符 [1] "d" "sdacd" "addfcdf" > sub("a*c","",c("abcd", "sdacd", "addfcdf")) ## *表示匹配前面一个字符0次或任意多次; a*c表示匹配:a0次或任意多次 + c [1] "abd" "sdd" "addfdf" > sub("a.*c","",c("abcd", "sdacd", "addfcdf")) ## .*表示匹配任意字符0次或任意多次; a.*c表示匹配:a + 任意字符0次多任意多次 + c; [1] "d" "sdd" "df"
002、shell中
root@PC1:/home/test2# cat a.txt abcd sdacd addfcdf root@PC1:/home/test2# sed 's/a.c//' a.txt ## .表示任意字符一次; a.c匹配:a + 任一字符一次 + c d sdacd addfcdf root@PC1:/home/test2# cat a.txt abcd sdacd addfcdf root@PC1:/home/test2# sed 's/a*c//' a.txt ## *表示匹配前一个字符0次或任意多次; a*c匹配:a0次或任意多次 + c abd sdd addfdf root@PC1:/home/test2# cat a.txt abcd sdacd addfcdf root@PC1:/home/test2# sed 's/a.*c//' a.txt ## .*表示匹配一个字符0次或任意多次; a.*c匹配:a + 任意字符0次或任意多次 + c d sdd df