博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于正则表达式第一篇
阅读量:2446 次
发布时间:2019-05-10

本文共 1828 字,大约阅读时间需要 6 分钟。

正则表达式在编程语言中,数据库中,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
后续部分在第二篇中继续分享。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23718752/viewspace-1303289/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23718752/viewspace-1303289/

你可能感兴趣的文章
js .has_使用has.js进行JavaScript功能检测
查看>>
javascript 编码_带类JavaScript编码
查看>>
dojo ajax 传参_使用Dojo动画AJAX记录删除
查看>>
unity 施加力量_在空块元素上施加宽度
查看>>
内核标头和开发包_PHP标头和流行的Mime类型
查看>>
preferreds-color-scheme:CSS媒体查询
查看>>
sh脚本和bash脚本_响应Bash脚本中的提示
查看>>
git 获取某个分支_获取Git分支在某个日期签出
查看>>
api.ajax和ajax_实施Google AJAX搜索API
查看>>
apache 下载 速度_使用Apache限制下载速度
查看>>
mootools_带有MooStarRating的MooTools星级
查看>>
cfs_quota_Mobile Safari中的QUOTA_EXCEEDED_ERR
查看>>
mootools 获取类名_使用MooTools创建命名空间的类
查看>>
mootools_使用MooTools的别名功能
查看>>
mootools_MooTools dwCheckboxes插件
查看>>
wordpress页面_强制登录以查看WordPress博客页面
查看>>
wordpress标签分类_在WordPress中更改类别标签
查看>>
mootools_使用MooTools或jQuery的iPhone单击效果
查看>>
shoelace下载_Shoelace.css:基本CSS入门工具包
查看>>
bit.ly 短地址转换_使用PHP创建Bit.ly短URL:API版本3
查看>>