一、几种常见的正则表达式
①最简单的正则是:行中完全匹配
举例:grep cat /usr/words 效果:输出所有包含 cat 这个字符串的行,比如 cat, category, concatenate 等,只要行内任意位置包含 "cat" 就会被匹配。
②使用 ^ 表示开头匹配,使用 $ 表示末尾匹配 举例:grep ^cat abc.txt; grep dog$ abc.txt
效果:^cat 强制要求 "cat" 必须出现在每行的第一个字符位置;dog$ 强制要求 "dog" 必须出现在每行的最后一个字符位置
③^cat$ 表示匹配只有 cat 的行
效果:^ 锁定行首,$ 锁定行尾,中间只有 "cat",表示整行内容必须严格等于 "cat"。
④c.t 表示匹配:含有 cat,c5t,cQt 这样内容的行
效果:. 是通配符,只能匹配一个字符(字母、数字、符号都可以)。
⑤c[aou]t 表示只匹配:cat,cot,cut
效果:[aou] 是字符集合,只匹配集合内的其中一个字符,不会匹配其他字符(比如 cart 中的 "a" 虽然在集合里,但 cart 是 c+a+r+t,中间是两个字符,所以不匹配)
⑥c.*t 表示匹配:cat,ct,coat,culvert 等以 c 开头,以 t 结尾的内容
效果:* 表示前面的字符(这里是 .)可以出现 0 次或多次,所以 .* 能匹配任意长度的任意字符(包括空)。
⑦c.\\{2\\}t 表示匹配 c 开头,t 结尾,中间正好 2 个字符的内容,比如 coat 举例:grep 'c.\\{2\\}t' /usr/share/dict/words
效果:.\\{2\\} 表示必须匹配恰好 2 个任意字符,多一个少一个都不行(比如 cat 中间只有 1 个字符,就不会被匹配)。
二、验证正则表达式
1.创建一个临时目录temp

2.在temp中匹配
①匹配文件中包含 "cat" 的所有行

②匹配以 "cat" 开头的行(^ 表示行首)

③匹配以 "dog" 结尾的行($ 表示行尾)

④匹配只有 "cat" 的行(^cat$ 精准匹配整行)

⑤匹配 "c" + 任意单个字符 + "t"(. 匹配任意单个字符)

⑥匹配 "c" + [a/o/u] + "t"([] 匹配指定字符集合)

⑦匹配 "c" 开头、"t" 结尾,中间任意字符(.* 匹配任意长度任意字符)

⑧匹配 "c" 开头、"t" 结尾,中间恰好 2 个字符(\\{n\\} 限定字符数量)





