前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于正则表达式第一篇(r3笔记第29天)

关于正则表达式第一篇(r3笔记第29天)

作者头像
jeanron100
发布2018-03-14 18:01:42
6560
发布2018-03-14 18:01:42
举报

正则表达式在编程语言中,数据库中,linux中都有着广泛的应用,一说起正则表达式就有些高深晦涩的味道,正则表达式精炼而重要,在Linux中有着举足轻重的作用,也是学好sed,awk的一个基本门槛。 正则表达式是基于正则表达式引擎来实现的,引擎主要有以下两类。可能大家对这个比较陌生。 POSIX基本正则表达式引擎 BRE POSIX扩展正则表达式引擎 ERE 大多数的Linux实现中都是BRE,也是默认的实现,还有扩展的实现就是ERE. 像grep,awk就支持基本和扩展的引擎,sed只支持基本引擎,也是基于性能的考虑。 学习awk相当于学习了一门新的编程语言,所以awk的功能很完善,扩展的引擎也支持了。 grep可以实现扩展的引擎,但是需要使用-E选项。 比如我们想查看一个字符bt,在b和t中间的字符可以出现0次或者1次。 bt,bat,bet等都是匹配的字符。

$ echo "bt" |grep 'b[ae]?t‘ --如果没有使用ERE就不会匹配到任何的数据

$ echo "bt" |grep -E 'b[ae]?t' --启用了ERE之后,就可以正确匹配了。 bt 关于BRE,主要有以下的模式 纯文本 特殊字符 锚字符 点字符 字符组 排除字符组 使用区间 特殊字符组 星号 --纯文本 对于纯文本来说是大小写敏感的,空格和数字也可以正常匹配,胆识空格不需要转义 比如我们需要匹配 一个字符串出现this的情况,使用This和this就有很大的不同。 ---使用sed来匹配 $ echo "This is a test"|sed -n '/This/p' This is a test echo "This is a test"|sed -n '/this/p' $ --使用awk来匹配 $ echo "This is a test"|awk '/This/{print $0}' This is a test --使用grep来匹配 $ echo "This is a test"|grep ‘This' This is a test $ echo “This is a test”|grep -i ‘THis‘ --忽略大小写 This is a test --特殊字符 以下的字符在正则表达式中会被视为特殊字符。 .*[]^$\+?|() 所以不能在文本中单独使用如上的特殊字符,需要加\做一个转义。 --sed来匹配字符\ echo "\ is a special character"|sed -n '/\\/p' \ is a special character --sed来匹配字符$,以下是几种测试的场景,可以对比一下输出结果。

$ echo "The price is $5.00"|sed -n '/$/p' The price is .00 $ echo "The price is $5.00"|sed -n '/\s/p' The price is .00

$ echo "The price is $5.00" The price is .00 $ echo "The price is \$5.00" The price is $5.00 $ echo 'The price is $5.00' The price is $5.00 $ echo 'The price is $5.00'|sed -n '/\$/p' The price is $5.00 echo "The price is $5.00"|sed -n '/\$/p'

对于字符/ $ echo "3 / 2"|sed -n '///p' sed: -e expression #1, char 3: unknown command: `/‘ 出这个错误是因为左斜线不是正则表达式的特殊字符的一部分,但是也需要转义,下面这样就没有问题了。 $ echo "3 / 2"|sed -n '/\//p' 3 / 2 后续部分在第二篇中继续分享。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档