Linux 正则表达式
正则表达式:regular expression REGEXP
基本正则表达式
元字符:
. 点:匹配任意单个字符
[] :匹配任意指定范围内的单个字符
[^] :匹配任意指定范围外的单个字符
匹配次数:
* :匹配其前面的字符任意次数
.* :表示任意长度任意字符
:用来转义,转义字符
? :匹配其前面的字符1次或0次
{m,n}:匹配其前面字符最少m次,最多n次,n可以省略,表示最多无限次,m不可以省略
位置锚定:
^ :锚定行首,表示此字符后面的字符串必须出现在行首
$ :锚定行尾,表示此字符前面的字符串必须出现在行尾
^$:表示空白行
<或:锚定词首,其后的任意字符必须作为单词的首部出现
>或:锚定词尾,其前的任意字符必须作为单词的尾部出现
< >:其内的字符串必须以单个字符出现
分组:
( ):将其内的字符串作为一个整体看待
:调用前面第n个左括号以及与之对应的右括号没有匹配到的内容
后向引用:将正则表达式前面的某个部分看做一个整体,在正则表达式的后面引用它
将子表达式放在(STRING)内,单个模式里可包括至多9个子表达式,且可为嵌套结构
(ab)(cd)[def]*21 可以匹配到abcdcdab abcdeeeecdab abcdddeeffcdab
(why).*1 可以匹配一行里出现两次why
(["']).*1 匹配单引号或双引号括起来的字符串
BRE运算符的优先级,从高到低
[..] [==] [::] 用于字符排序的方括号符号
转义字符
[] 方括号表达式
()
分组与后向引用
* {} 前置单个字符重现的正则表达式
无符号 连续
^ $ 位置锚定
扩展正则表达式
字符匹配:
. 点:匹配任意单个字符
[] :匹配任意指定范围内的单个字符
[^] :匹配任意指定范围外的单个字符
次数匹配:
* :匹配其前面的字符任意次数
? :匹配其前面的字符一次
+ :匹配其前面的字符至少一次
{m,n}:匹配其前面字符最少m次,最多n次,n可以省略,表示最多无限次,m不可以省略
位置锚定:
^ :锚定行首,表示此字符后面的字符串必须出现在行首
$ :锚定行尾,表示此字符前面的字符串必须出现在行尾
^$:表示空白行
<:锚定词首,其后的任意字符必须作为单词的首部出现
>:锚定词尾,其前的任意字符必须作为单词的尾部出现
分组:
( ):将其内的字符串作为一个整体看待
:调用前面第n个左括号以及与之对应的右括号没有匹配到的内容
或者:| 交替
例如 C|cat 表示C或者cat
使用 | 时,左边的会一直扩展到运算符的左边,右边的也会一直扩展到运算符的右边
有事 | 需要使用转义符转义,否则可能会被理解成管道
root@ubuntu:/home/linlin/linlin/shell# egrep root|linlin /etc/passwd
root:x:0:0:root:/root:/bin/bash
linlin:x:1000:1000:linlin's ubunto,,,:/home/linlin:/bin/bash
ERE运算符优先级,由高至低
[..] [==] [::] 用于字符对应的方括号符号
转义字符
[] 方括号表达式
()
分组与后向引用
* + ? {} 重复前置的正则表达式
无符号 连续
^ $ 位置锚定
| 交替
POSIX字符集:
[:alnum:] 数字字符
[:alpha:] 字母字符
[:blank:] 空格或Tab
[:cntrl:] 控制字符
[:digit:] 数字字符
[:graph:] 非空格字符
[:lower:] 小写字母字符
[:upper:] 大写字母字符
[:print:] 可显示字符
[:punct:] 标点符号字符
[:space:] 空白字符
[:xdigit:] 十六进制数字