问题集锦
01 \n 反向引用 反向引用的意思是:
03中 ? 匹配0到1次 的具体意思是啥?
03 中 * 匹配0到多次 的具体意思是啥?
04 的实例2中的两个正则表达式只有细微的差别,只是后面的顺序不同,结果不同,不知道是为啥?正则还是太难了,留给大家一起解决吧。
目录
目录
正文
01 grep
作用:
显示匹配行
使用方法:
grep 选项 参数
选项:
-v 反显示 显示未匹配的行
-E 采用扩展正则表达式
02 匹配操作符
\转义字符
. 匹配任意单个字符
[012] [^0-9]字符序列单字符占位
^ 行首
$行尾
\< \> 单词首尾边界 例如 \<abc
| 连接操作符 意为或
()选择操作符
\n 反向引用 反向引用的意思是:
03 重复操作符
? 匹配0到1次
* 匹配0到多次
+ 匹配1到多次
{n} 匹配n次 :指把{}前面的部分算上,重复了两次。
{n,} 匹配n到多次
{n,m} 匹配n到m次
.* 匹配任意多个字符
实例
1 匹配只有ooxx这四位的正则表达式
grep "/<ooxx/>" a.txt
2 匹配包含四位连续整数的行
思路:列出所有的情况 。无非四种情况,以数字开头和以非数字开头,以数字结尾和以非数字结尾 将开头和结尾结合共三种情况,比如 1234xxx ,xx1234,xx1234x。把它们可以抽象化为四位 1/23/4,其中中间两个位一定是数字,第一位可以是数字也可以是非数字加数字(第一位可以是非数字加数字这个理解比较抽象,比如xx1234,其中x1代表这里的第1位),结尾可以是数字也可以是数字加非数字(最后一位是数字比如xx1234 其中4就是最后一位,最后一位是数字加非数字,比如1234xxx,4x就是数字加非数字)。按照这样的划分可以写出以下正则表达式。
"\(^[0-9]\|[^0-9][0-9]\)[0-9]\{2\}\([0-9][^0-9]\|[0-9]$\)
下面这个正则表达式是不正确的,不知道为啥,两者的不同只有结尾的结尾处的顺序不同。
\(^[0-9]\|[^0-9][0-9]\)[0-9]\{2\}\([0-9]\|[0-9][^0-9]$\)
正则太难了,还是留给大家一起解决吧。
3 匹配最少含有2个b,最多含有3个b的行。
4 匹配以连续的三个a开头的行,或者是以空格开头,接下来是三个连续的a
grep "\<aaa" test
5 匹配god.*good.*god.*good 这里使用了反向引用
grep "god.*good.*god.*good" test
grep "\(god\).*\(good\).*\1.*\2.*" test
这里反引用的意思是用1代表第一个括号内的内容,用2代表第二个括号内的内容,这个时候需要用转义符号将1和2转义,这个十分重要。