正则表达式

简要表达式

  • 一个正则表达式是一个字符串,字符串里的字符被称为元字符,它们可能表示了比字面上看起来的意思更丰富的含义
一个正则表达式包含一个或多个项:
  • 一个字符集,这里的字符集的字符表示的就是它们字面上的意思,正则表达式最简单的情况就是仅仅由字符集组成,没有其他的元字符;
  • 锚:一个锚指明了正则表达式在一行文本中要匹配的位置,例如^和$就是锚。
  • 修饰符:它们用于展开或缩小(即是修改了)正则表达式匹配文本行的范围,修饰符包括了* ,(), \

正则表达式的主要作用是用来文本搜索和字符串操作,一个正则表达式匹配一个字符或是一串字符

    • –*-- 匹配前一个字符的任意多次(包括0次)
  • . --.-- 匹配除了换行符之外的任意一个字符
  • 脱字符 ^ ,–^-- 匹配一行的开头,但依赖于上下文环境,可能在正则表达式中表示否定一个字符集的意思;
  • $ , –KaTeX parse error: Expected group after '^' at position 17: …-在正则表达式中匹配行尾, '^̲’ 匹配空行
  • [] ,–[…]-- 在正则表达式中表示匹配括号中的一个字符;[xyz],匹配字符x,y或z,[c-n],匹配从字符c到n之间的任意一个字符,[B-Pk-y]匹配从B到P从k到y的任意一个字符;[a-z0-9]匹配任意小写字母或数字,[^b-d]匹配除了从b到d范围内所有的字符,这是正则表达式中反转或取否的一个例子;(就好像在别的情形中!字符所扮演的角色)
  • 反斜杠 ---- 转义(escapes)一个特殊的字符,使这个字符表示原来字面上的意思;
  • 转义尖角号 --<…> 用于表示单词的边界,尖角号必须被转义,因为不这样的话就表示单纯字面的意思,<the>,匹配单词"the",但是不匹配them,there,other等;

确定正则表达式能否工作的唯一方法是测试它

扩展的正则表达式.增加了一些元字符到上面提到的基本的元字符集合中,它们在egrep,awk,perl中使用;
  • 问号 – ? – 匹配零或一个前面的字符,它一般用于匹配单个字符;
  • 加号 – + – 匹配一个或者多个前面的字符,它的作用和*很相似,但唯一的区别是它不匹配0个字符的情况;
    ***匹配字符串 ***
GNU版本的sed和awk可以使用"+",但是需要转义
1.echo 1222qqqww | sed -ne '/12\+q\+w\+/p'
1222qqqww
2.echo 1222qqqww | gawk '/12+q+w+/'
1222qqqww
3.echo 1222qqqww | grep '12\+q\+w\+'
1222qqqww
  • 转义”大括号“ – {} – 指示前面正则表达式匹配的次数,要转义是因为不转义的话只是表示他们字面上的意思,这个用法只是技巧上的而不是基本正则表达式的内容;列如:"[0-9]{5}",精确匹配5个数字;
    大括号不能在”经典“(不是posix兼容)的正则表达式版本的awk中使用,然而gawk有一个选项–re-interval来允许使用大括号(不必转义)
echo 222 | gawk --re-interval '/2{3}/'
2222
perl和一些egrep 版本不要求转义大括号
  • 圆括号 --()–括起一组正则表达式,它和"1" 操作符或在用expr进行子字符串提取一起使用很有用
  • 竖线 – | – "或"正则操作符用于匹配一组可选的字符
egrep 're(a|e)d' xxx
POSIX字符类. [:class:]这是另外一个可选的用于指定匹配字符范围的方法
  • [:alnum:] 匹配字母和数字,等同于A-Za-z0-9
  • [:alpha:] 匹配字母,等同于A-Za-z
  • [:blank:] 匹配一个空格或是一个制表符(tab)
  • [:cntrl:] 匹配控制字符
  • [:digit:] 匹配(十进制)数字,等同于0-9
  • [:graph:] (可打印的图形字符)匹配ASCLL码值的33-126之间的字符,和[:print:]一样,但是不包括空格字符
  • [:lower:] 匹配小写字母,等同于a-z
  • [:print:] (可打印的字符)。匹配 ASCII码值32-126之间的字符,和[:graph:],但是增多一个空格字符;
  • [:space:] 匹配空白字符(空格符和水平制表符)
  • [:upper:] 匹配大写字母,等同于A-Z。
  • [:xdigit:] 匹配十六进制数字,等同于0-9A-Fa-f
    POSIX字符类一般都要求用双方括号double brackets([[ ]])引起来
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值