正则表达式通配符组合.*与*.的区别

有这么四行数据
1.this line is empty
2.this line +empty
3.this line.empty
4.this lineempty

如果使用grep ‘line.*e’ 来进行检索的话,四行数据都可以检索出来;
但是如果使用grep ‘line*.e’ 来进行检索的话,则只能检索出后两行;

其实这还得从通配符.和*所表示的含义说起。

通配符 含义
. 匹配除了换行符以外任意一个字符
* 前一个字符匹配0次或任意多次

那么,
grep ‘line.*e’ 表示“line”后紧跟任意一个除换行符以外的字符,然后这个字符出现0次或者任意多次都可以,然后出现字符额,所以这四行数据都满足要求;
grep ‘line*.e’表示“line”后出现0次或者任意多次的字母e,然后再紧跟任意一个除换行符以外的字符,之后再紧跟一个字母e。第一行line后0个e紧跟空格符,之后是i,不是e,所以不符合要求。第二行第一行line后0个e紧跟空格符,之后是+,不是e,所以也不符合要求。只有第三行和第四行是符合要求的。

对于正则表达式来说,单个通配符的意义看似容易理解,只有理解透彻才能明白他们组合起来所表达的真实意思。

发布了30 篇原创文章 · 获赞 10 · 访问量 5262

猜你喜欢

转载自blog.csdn.net/wufeng_no1/article/details/105272036