shell编程之正则表达式
来源:互联网 发布:好穿的皮鞋 知乎 编辑:程序博客网 时间:2024/05/17 23:51
其实就是一种规范,也就是模式,约束字符串等符合什么样的格式,比如要求字符串必须a开头,t结尾,符合这样条件的字符串就要用到正则表达式。
2、两套库
GNU/Linux中有有两套库用足正则表达式编程,POSIX库,自带的;PCRE库,Perl,功能比较全,本文采用Perl。
3、初体验
$egrep ""^a.*t$" /usr/share/dict/words 表示从words文件中查找以a开头,t结尾的单词。
$egrep ""^a.*t$" /usr/share/dict/words | wc -c 统计得到单词的数量。
4、字符集和单词
“.”用于匹配除了换行符之外的任意一个字符,.at就能匹配cat、#at、&at……
[a-z]at:限定只能是小写字母
[abc]at:只能是a或者b或者c
[a-zA-Z]at.匹配所有的英文字母,[0-9]匹配0到9的数字。
说明:"[a-z]at":只要含有[a-z]at都匹配,例如cat、a#$bat\@!bat$@$等,要想只限制cat这样的,要加单词约束/<[a-z]at/>.
Linux中,“单词”是指两侧由非单词字符分割的字符串。
非单词字符是指除了字母、数字、下划线以外的任何字符。
5、字符类的概念
$egrep "[[:upper:]]t$" words,匹配大写字母开头,小写字母t结尾的字符换。诸如[[:uper:]]又很多,小写字母等等。
6、位置匹配
“^”行首、“$”行尾
例:^a[a-z]t$:以字母a开头。t结尾,中间包含一个小写字母的单词。
7、字符转义\
这个和C、C++等语言中的转义字符概念一致,就是比如你想输进去“.”,可是“.”表示除换行符外的任何字符,那么可以使用“\.”就表示其本身了。
8、重复
“*”表示任意数量的重复
“+”表示重复至少1次
“?”表示重复0或1次
“{3}”表示重复3次,“{n,m}”表示重复至少n次,至多m次;“{n,}”表示重复至少n次,没上限。
9、子表达式
也称为“分组”,说的更直白一点就是,一坨字符串看成一个整体,用括号括起来(),整体出现。
例:“(my){2}&t”就表示以t结尾,my出现两次的字符串。这时候my是一个整体。mymyt等将被匹配。
10、反义
就是取原来的匹配相反的匹配。整体取反。
[^y]:除了y字符都能匹配。[6aoeiu]:除了aooeiu所有的字符。
注意:^[^y]表示行首不为y,^在表示行首和反义时在位置上的区别。
11、分支
^ht$:行首为h,行尾为t,表示并且。
^h|t$:行首为h,或者行尾为t,表示或。
例子:Jan(uary| |\.):匹配January或January或者Jan.
12、逆向引用
子表达式(分组)中捕获的内容可以在正则表达式的其他地方再次使用,用户可用反斜杠“\”加自表达式上标号来指代该分组匹配到的内容。
(\<.*\>).?()*\1:其中\1前面的(\<.*\>),表示匹配任意长度档次的第一个表达式
从左到右第一个出现的自表达式为1、第二个为2……
……
当然,正则表达式的匹配是门大学问,通常我们只能写出简单的,具体的应用还要自己写出一些更为复杂的正则表达式,并且正则表达式的编写极为容易出错,主要是考虑不全。
大家也可以参考如下这篇文章,写的很赞,很适合入门,简单应用:正则表达式30分钟入门教程
- shell编程之正则表达式
- shell编程之正则表达式
- Shell编程之正则表达式
- shell编程之正则表达式
- shell 编程之正则表达式
- shell编程之正则表达式
- shell 编程(一)之 正则表达式
- shell编程之正则表达式基础
- linux系统之shell编程-正则表达式
- Linux基础知识---Shell编程之正则表达式
- shell编程入门之正则表达式
- shell编程高级之正则表达式
- Shell编程之正则表达式总结
- 十三 Shell编程之正则表达式
- shell编程之正则表达式部分
- shell编程 正则表达式
- Shell编程-正则表达式
- shell编程-正则表达式
- windows与VMware ubuntu虚拟机实现文件共享
- JAVA.WEB笔记
- 面向对象分析与设计(C++)课堂笔记
- 期刊搜索问题——SCI、EI、IEEE和中文期刊
- 实例讲解虚拟机3种网络模式(桥接、nat、Host-only)
- shell编程之正则表达式
- springframework(四)Bean的依赖设置与集合对象的处理
- 无硝烟的互联网公司战争 “三国演义”之阿里巴巴
- Ubuntu12.04等的输入法问题 中英文切换 fitcx
- 版本控制系统Subversion
- VMWare中安装windowsXP遇到的问题
- Git版本控制系统VCS
- Ubuntu中输入输出重定向及管道技术简述
- CentOS7,将文本模式改成图形界面模式