正则表达式 正则是什么意思( 二 )


重复之前的字符或文本0个或多个,之前的文本或字符连续0次或多次
.*
任意多个字符
^.*
以任意多个字符串开头,.*尽可能多,有多少算多少 , 贪婪性
括号表达式

[abc][0- 9][.,/]
匹配字符集合内的任意一个字符a或b或c:[a-z]匹配所有小写字母;表示一个整 体,内藏无限可能;[abc]找a或b或c可以写成[a-c]
[^abc]
匹配不包含后的任意字符a或b或c,是对[abc]的取反,且与含义不同
a{n,m}
重复前面a字符n到m次(如果用egrep或sed -r可去掉斜线)
a{n,}
重复前面a字符至少n次,如果用egrep或sed -r可去掉斜线
a{n}
重复前面a字符n次,如果用egrep或sed -r可去掉斜线
扩展正则表达式ERE特殊字符
描述
+
重复前一个字符一次或一次以上,前一个字符连续一个或多个 , 把连续的文本/ 字符取出

重复前面一个字符0次或1次(.是有且只有1个)
()
分组过滤被括起来的东西表示一个整体(一个字符),后向引用
懒惰匹配和贪婪匹配

  • 贪婪匹配:正则表达式中包含重复的限定符时,通常的行为是匹配尽可能多的字符 。
  • 懒惰匹配,有时候需要匹配尽可能少的字符 。
如果: A.*B , 它将会匹配最长的以A开始,以B结束的字符串 。那用它来搜索AABAB的话,它会匹配整个字符串AABAB 。我们可能需要匹配的是AB这样的话就需要用到懒惰匹配了 。
代码/语法
描述
*?
重复任意次,但尽可能少重复
+?
重复1次或更多次,但尽可能少重复
??
重复0次或1次,但尽可能少重复
{n,m}?
重复n到m次,但尽可能少重复
{n,}?
重复n次以上 , 但尽可能少重复
正则小结
  • 基础正则:BRE
^
$
.
*
.*
[abc]
[^abc]
  • 扩展正则:ERE
+
?
()
{}
a{n,m}
a{n,}
a{n}
转义字符:将字符的意思改变(不支持正则符号的,转变字符含义为正则,支持正则的转变 为普通字符含义)
补充说明正则表达式
描述
示例
[:alnum:]
[a-zA-Z0-9]匹配任意一个字母或数字字符
[[:alnum:]]+
[:alpha:]
匹配任意一个字母字符(包括大小写字母)
[[:alpha:]]{4}
[:blank:]
空格与制表符(横向纵向)
[[:blank:]]*
[:digit:]
匹配任意一个数字字符
[[:digit:]]?
[:lower:]
匹配小写字母
[[:lower:]]{5,}
[:upper:]
匹配大写字母
([[:upper:]]+)?
[:punct:]
匹配标点符号
[[:punct:]]
[:space:]
匹配一个包括换行符 , 回车等在内的所有空白符
[[:space:]]+
[:graph:]
匹配任何一个可以看得见的且可以打印的字符
[[:graph:]]
[:xdigit:]
任何一个十六进制数
[[:xdigit:]]+
[:cntrl:]
任何一个控制字符(ASCII字符集中的前32个字符)
[[:cntrl:]]
[:print:]
任何一个可以打印的字符
[[:print:]]
写在最后
学会正则表达式还是有必要的 , 配合grep,egrep,sed -r , awk更为强大,至少以后你的同事写出来后 , 不会在脑子里出现 “这是写的啥玩意儿?。吭趺次铱床欢亍?的想法或者同事不会正则表达式就可以牛逼的说,让我来 。

推荐阅读