正则表达式用法汇总

正则表达式:使用单个字符串来描述或匹配一系列符合某个句法规则的字符串。在很多文本编辑器或其他的工具里,正则表达式通常用来检索和替换那些符合某个模式的文本内容。在对Linux系统进行管理时,我们有很多工具 支持正则表达式的匹配方法,常用的工具有grep、sed、awk等。
基本要素:字符类、数字限定符、位置限定符

grep是Linux下按行匹配文本的工具,其采用贪婪模式,即为匹配当前行中的所有的匹配内容。

     -E:使用扩展正则匹配
     --color:将匹配到的内容进行语法高亮

1.正则表达式所支持的合法字符

字符说明
x字符x(x代表任何合法的字符)
\\反斜杠字符
\0mnn八进制数0mnn所表示的字符
\xhh十六进制值0xhh所表示的字符
\uhhhh十六进制值0xhhhh所表示的Unicode字符
\t制表符('\u0009')
\n新行(换行)符('\u000A')
\r回车符('\u000D')
\f换页符('\u000C')
\a报警(bell)符('\u0007')
\eEscape符('\u001B')
\cxx对用的控制符。如\cM匹配Ctrl-M。x值必须为A~Z或a~z其中之一。

2.正则表达式中有一些特殊的字符,其在正则表达式中有特殊的用途,如果要匹配这些特殊的字符,就需要先进行转义(前面添加\)。

特殊字符说明
$匹配一行的结尾(若要匹配$字符本身,使用\$,下面字符类似)
^匹配一行的开头
()标记子表达式的开头和结束的位置
[]标记中括号表达式的开头和结束的位置
{}

标记前面子表达式的出现频度。

其中{N}表示出现N次;{N,}表示至少出现N次;{,M}表示最多出现M次;{N,M}表示至少出现N次,最多出现M次 。

*指定前面的子表达式可以出现零次或多次
+指定前面的子表达式可以出现一次或多次
?指定前面的子表达式可以出现零次或一次
.匹配除过换行符\n之外的任何单字符
\用于转义下面的字符
|指定两项之中任选一项

3.正则表达式中有一些可以匹配多个字符的特殊字符,称为预定义字符。

预定义字符说明
.可以匹配任何字符(除换行符)
\d可以匹配0~9的所有字符,[0~9]
\D匹配非数字
\s匹配所有的空白字符,包括空格、制表符、回车符、换页符、换行符等,[\n\t\r\f]
\S匹配所有的非空白字符,[^\n\t\r\f]
\w匹配所有的单词字符,包括0~9所有数字、26个英文字符和下划线(_),[a-zA-Z0-9]
\W匹配所有的非单词字符,[^a-zA-Z0-9]

4.正则表达式中方括号表达式的用法:

方括号表达式说明
可以表示枚举如[abc],表示a、b、c中得任意一个字符
可以表示范围:-如[a-g],表示a~g范围内的任意字符
可以表示求否:^如[^abc],表示非a、b、c的任意字符;[^a-g],表示不是a~g范围内的任意字符
表示“与”运算:&&如[a-g&&[bc]],表示a~g和[bc]的交集,即为b或c;[a-g&&[^bc]],表示a~g范围内所有字符除了b和c,即为[ad-g]
表示“并”运算类似枚举,如[a-d[m-p]],表示[a-dm-p]

note:贪婪模式和非贪婪模式
贪婪模式:正则表达式匹配时,会尽可能多的去匹配符合条件的内容;

非贪婪模式:正则表达式匹配时,一旦发现符合要求的匹配项,立马就匹配成功,不会再继续匹配。

 

补充:

\b 匹配以英文字母,数字为边界的字符串

\B 匹配不以英文字母,数值为边界的字符串

a|b|c 匹配符合a字符 或是b字符 或是c字符 的字符串

abc 匹配含有 abc 的字符串

(pattern) () 这个符号会记住所找寻到的字符串,是一个很实用的语法。第一个 () 内所找到的字 符串变成 $1 这个变量或是 \1 变量,第二个 () 内所找到的字符串变成 $2 这个变量或是 \2 变量,以此类推下去。 /pattern/i i 这个参数表示忽略英文大小写,也就是在匹配字符串的时候,不考虑英文的大小写问 题。 \ 如果要在 pattern 模式中找寻一个特殊字符,如 "*",则要在这个字符前加上 \ 符号,这样才会让特殊字符失效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值