正则表达式定义:是一些字符或是特殊字符串模式的集合。
Pattern(模式): 文本字符和正则表达式的元字符组合而成匹配条件
#正则表达式就是里面有一些元字符,这些字符不表示它本身的意思,而表示通配的意义。
注:默认情况下正则表达式工作在贪婪模式下
grep:
SYNOPSIS: grep [OPTIONS] PATTERN [FILE...]
Options:
--color=auto:对匹配到的文本着色后高亮显示;
-i:igmorecase,忽略字符的大小写;
-o:仅显示匹配到的字符串本身;
-v:--invert-match:反向显示;
-n:输出行号
-w:以字符为单位精确匹配
-E:--entended-regexp:支持扩展的正则表达式元字符;
-q:--quiet,--silent;静默模式,不输出任何信息;
-A #:after,后#行
-B #:before,前#行
-C #:context,前后各#行
基本正则表达式元字符:
字符匹配:
. :匹配任意单个字符;
[] :匹配指定范围内的任意单个字符;
[^]:匹配指定范围外的任意单个字符;
[:digit:]
[:alpha:]
[:upper:]
[:lower:]
[:space:]
[:alnum:]
[:punct:]
匹配次数:用在要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数;
*: 匹配其前面的字符任意次;0.1,多次;
.*:匹配任意长度的任意字符
?: 匹配其前面的字符0次或1次;即前面的字符是可有可无的;
+: 匹配其前面的字符一次或多次;即前面的字符要出现至少一次;
{m}:匹配前面的字符m次;
{m,n}:匹配其前面的字符至少m次;至多n次;
位置锚定:
^ :行首锚定;用于模式的最左侧;
$ :行尾锚定:用于模式的最右侧;
^PATTERN$:用PATTERN来匹配整行;
^$:空白行;
^[[:space:]]*$:空行或包含空白字符的行
<或b:词首锚定,用于单词的最左侧;
>或b:词尾锚定,用于单词的最右侧;
<PATTERN>:精确匹配完整单词;
分组及引用
():将一个或多个字符捆绑在一起,当做一个整体进行处理
(xy)*ab
Note:
分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部的变量中,这些变量为:
1:模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符;
2:模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配到的字符;
3:...
...
*后向引用:引用前面的分组括号中的模式所匹配到的字符
扩展正则表达式的元字符
字符匹配:
.:
[]:
[^]:
次数匹配:
*:任意次
?:0次或1次,
+:其前字符至少一次;
{m}:期前的字符m次;
{m,n}:至少m次,至多n次;
位置锚定:
^:行首锚定
$:行尾锚定
<,b:词首锚定
>,b:词尾锚定
分组及引用:
():分组;括号内的模式匹配到的字符会被记录与正则表达式引擎的内部变量中;
后向引用:1,2...
或:
a|b:
C|cat:C或cat
(c|C)at:cat或Cat