正则表达式:
给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。
正则表达式的特点是:
1. 灵活性、逻辑性和功能性非常的强;
2. 可以迅速地用极简单的方式达到字符串的复杂控制。
3. 对于刚接触的人来说,比较晦涩难懂。
由于正则表达式主要
应用对象
是文本,因此它在各种
文本编辑器
场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。
基本正则表达式:
grep [options] PATTERN [FILE...]
-i 忽略大小写
--colour/color 颜色显示
-v 反向查找,显示没有被模式匹配的行
-o 只显示被模式匹配到的字符串
:任意长度的任意字符
?:任意单个字符
-i 忽略大小写
--colour/color 颜色显示
-v 反向查找,显示没有被模式匹配的行
-o 只显示被模式匹配到的字符串
:任意长度的任意字符
?:任意单个字符
例如:
1、grep "#" /etc/passwd
1、grep "#" /etc/passwd
把/etc/passwd中带#的行都显示出来
2、-i 忽略大小写
grep-i "Ss" /etc/inittab
3、-v 反向查找
grep -v "#" /etc/inittab
4、锚定行首
grep "^#" /etc/passwd
显示/etc/passwd中以#开头的行
扩展正则表达式:
1、字符匹配:
.:任意单个字符
.:任意单个字符
[]:范围内
[^]:范围外的
字符集合:
空白字符: [:space:]
标点符号:[:punct:]
小写字母:[:lower:]
大写字母:[:upper:]
大小写字母:[:alpha:]
数字和大小写字:[:alnum:]
数字:[:digit:]
标点符号:[:punct:]
小写字母:[:lower:]
大写字母:[:upper:]
大小写字母:[:alpha:]
数字和大小写字:[:alnum:]
数字:[:digit:]
grep "^[[:digit:]]" /etc/passwd
显示/etc/passwd中以数字开头的行
2、次数匹配:
*:其前面字符任意次
*:其前面字符任意次
?:其前面字符的0次或者一次
+:匹配此前面的字符至少一次 '[[:space:]]+' 至少一个空字符
{m,n}:匹配m到n次,不需要再用\
3、位置锚定:
^:锚定行首,此字符后面的任意内容必须出现在行首 grep '^ro' /file
^:锚定行首,此字符后面的任意内容必须出现在行首 grep '^ro' /file
$:锚定行尾,此字符前面的任意内容必须出现在行尾 grep 'ro$' /file
^$:空白行
\<:其后面的任意字符必须作为单词首部出现
\>:其前面的任意字符必须作为单词的尾部出现
\<或\b:锚定词首,其后面的任意字符必须作为单词首部出现
\>或\b:锚定词尾,其前面的任意字符必须作为单词的尾部出现
4、分组:
\(\) 用于分组
\(\) 用于分组
\(ab\):ab整体可以出现1次或2次,后向引用,被前面括号括起来的内容在后面用一个符号可以重新引用
\1:引用第一个左括号与之对应的右括号所括起来的所有内容