0
点赞
收藏
分享

微信扫一扫

Linux 正则表达式

Linux 正则表达式
正则表达式:regular expression REGEXP
基本正则表达式

元字符:
. 点:匹配任意单个字符
[] :匹配任意指定范围内的单个字符
[^] :匹配任意指定范围外的单个字符

匹配次数:
* :匹配其前面的字符任意次数
.* :表示任意长度任意字符
\ :用来转义,转义字符
\? :匹配其前面的字符1次或0次
\{m,n\}:匹配其前面字符最少m次,最多n次,n可以省略,表示最多无限次,m不可以省略

位置锚定:
^ :锚定行首,表示此字符后面的字符串必须出现在行首
$ :锚定行尾,表示此字符前面的字符串必须出现在行尾
^$:表示空白行
\<或\b:锚定词首,其后的任意字符必须作为单词的首部出现
\>或\b:锚定词尾,其前的任意字符必须作为单词的尾部出现
\< \>:其内的字符串必须以单个字符出现

分组:
\( \):将其内的字符串作为一个整体看待
\n:调用前面第n个左括号以及与之对应的右括号没有匹配到的内容

后向引用:将正则表达式前面的某个部分看做一个整体,在正则表达式的后面引用它
将子表达式放在\(STRING\)内,单个模式里可包括至多9个子表达式,且可为嵌套结构
\(ab\)\(cd\)[def]*\2\1 可以匹配到abcdcdab abcdeeeecdab abcdddeeffcdab
\(why\).*\1 可以匹配一行里出现两次why
\(["']\).*\1 匹配单引号或双引号括起来的字符串

BRE运算符的优先级,从高到低
[..] [==] [::] 用于字符排序的方括号符号
\ 转义字符
[] 方括号表达式
\(\) \n 分组与后向引用
* \{\} 前置单个字符重现的正则表达式
无符号 连续
^ $ 位置锚定

扩展正则表达式

字符匹配:
. 点:匹配任意单个字符
[] :匹配任意指定范围内的单个字符
[^] :匹配任意指定范围外的单个字符

次数匹配:
* :匹配其前面的字符任意次数
? :匹配其前面的字符一次
+ :匹配其前面的字符至少一次
\{m,n\}:匹配其前面字符最少m次,最多n次,n可以省略,表示最多无限次,m不可以省略

位置锚定:
^ :锚定行首,表示此字符后面的字符串必须出现在行首
$ :锚定行尾,表示此字符前面的字符串必须出现在行尾
^$:表示空白行
\<:锚定词首,其后的任意字符必须作为单词的首部出现
\>:锚定词尾,其前的任意字符必须作为单词的尾部出现

分组:
\( \):将其内的字符串作为一个整体看待
\n:调用前面第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运算符优先级,由高至低
[..] [==] [::] 用于字符对应的方括号符号
\ 转义字符
[] 方括号表达式
\(\) \n 分组与后向引用
* + ? {} 重复前置的正则表达式
无符号 连续
^ $ 位置锚定
| 交替

POSIX字符集:
[:alnum:] 数字字符
[:alpha:] 字母字符
[:blank:] 空格或Tab
[:cntrl:] 控制字符
[:digit:] 数字字符
[:graph:] 非空格字符
[:lower:] 小写字母字符
[:upper:] 大写字母字符
[:print:] 可显示字符
[:punct:] 标点符号字符
[:space:] 空白字符
[:xdigit:] 十六进制数字
转载请注明出处

举报

相关推荐

0 条评论