SEHLL脚本之正则表达式

SEHLL脚本之正则表达式_第1张图片
左Ken Thompson | 右Dennis MacAlistair Ritchie

Ken Thompson —— UNIX操作系统之父 UNIX操作系统之父;

Dennis MacAlistair Ritchie  ——  编程C语言之父,UNIX系统之父;


正则表达式的来源与定义是什么?

答:正则表达式的定义:正则表达式指的是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式的来源:开始是由两位脑神经科学家借用数学上的正则表达式来表示复杂的脑神经网络,后来Ken Thompson是 Unix的主要发明人,也就是大名鼎鼎的Unix之父,又将其用于计算机领域;

正则表达式,现在是很多编程语言和操作系统的通用语言;


正则表达式的特点是什么?

答:正则表达式的特点是:

1. 灵活性、逻辑性和功能性非常强;

2. 可以迅速地用极简单的方式达到字符串的复杂控制。

3. 对于刚接触的人来说,比较晦涩难懂。


正则表达式的作用是什么?

答:主要用于匹配过滤文本文件中你所需要的特定字符;


基本正则符号


1、   .  点,表示的是:匹配任意单个字符;

例如:

. 表示的就是查找所有;

..表示的是两个字符相连的字符;

....表示的是4个相连的字符,空格也算;

a...表示的是匹配以a为开头的,且后面跟着3个字符的字符;

...a表示的是匹配在a前面有三个以上的字符;


2、   ^ 尖角号,表示的是匹配以某某字符为首的字符;

例如:

grep  "^a"   /luo.txt   表示的是寻找匹配以a开头的字符;

grep  "^aaa"  /luo.txt  表示的是寻找匹配以aaa开头的字符;


3、   $ 表示的是:匹配文本文件中以某某字符结尾的字符;

例如:

grep  "aaa$"   /luo.txt   表示的是匹配以aaa字符结尾的字符;

grep  "aa$"   /luo.txt   表示的是匹配以aa字符结尾的字符;


4、   * 表示的是:匹配前一个字符在文本文件出现了任意次数的字符,零次也算;

例如:

grep   "haha*"   /luo.txt   译为:寻找匹配文本文件中带有haha的字符,没有出现的行也算,因为没有出现就表示0次;

grep   ".*"  /luo.txt    译为:寻找文本文件中任意单个字符,出现的任意次数;其实就是查询所有;任意字符就是所有字符,任意次数就是多少次都可以,包括零次;


5、   [ ] 集合,表示的是匹配集合中的任意单个字符;

例如:

grep  "[ a]"   /luo.txt   译为:寻找匹配文本文件中带a的字符;

grep  "[abc]"   /luo.txt  译为:寻找匹配文本文件中带abc的字符;

grep  "[a-z]"  /luo.txt   译为:寻找匹配文本文件中带小写字母的字符;

grep  "[0-9]"  /luo.txt  译为:寻找匹配文本文件中带数字的字符;

grep  "[A-Z]"  /luo.txt  译为:寻找匹配文本文件中带大写字母的字符;


6、   [ ^ ] 对集合取反值,寻找匹配文本文件中与集合相反的字符;

例如:

grep  "[^A-Z]"  译为:  寻找匹配文件中除大写字母以外的字符;

grep  "[^0-9]"   译为:寻找匹配文本文件中除数字以外的字符;


7、   \{n,m\} 匹配前一个字符出现的第n次至第m次;

例如:

grep   " a\{2,3\}"   /luo.txt    译为:寻找文本文件中带a字符,并且a字符连续出现了2-3次;

grep  "a\{1,5\}"  /luo.txt     译为:寻找文本文件中带a字符,并且a字符出现了1-5次;


8、   \{n\}  匹配前一个字符在文本文件文件中连续出现了n次;

例如:

grep  "a\{5\}"   /luo.txt  译为:寻找匹配文本文件中带a字符,且连续出现了5次的字符;

grep  "ab\{3}"   /luo.txt   译为:寻找匹配文本文件中带有ab字符,且连续出现了3次的字符;


9、   \{n,\}  匹配前一个字符在文本文件中出现了n次及以上的字符;

例如:

grep  "a\{3,\}"    译为:寻找查询文本文件中a字符出现了3次及以上的字符;

grep  "12\{2,\}"  译为:寻找查询文本文件中12字符出现了2次及以上的字符;


扩展正则符号



1、 +  表示的是+号前一个字符在文本文件中最少出现1次;(与 [ ] 集合类似但使用的工具不一样,扩展正则符号采用的是 egrep)

例如:

egrep   "a+"  /luo.txt  译为:寻找匹配文本文件中带有一个a字符或则一个以上的a字符;


2、 ? 表示的是?号前的字符有没有出现,最多匹配一次;

例如:

egrep  "a?"   /luo.txt  译为:寻找匹配文本文件中带有一个a的字符;

egrep  "aa?"  /luo.txt    译为:寻找文本文件中连续带有两个a的字符;


3、  {n,m}  表示的是文本文件中某某字符连续出现第n至m次;

例如:

egrepo  “a{2,5}”  /luo.txt   译为:寻找匹配文本文件中,a字符连续出现2-5次的字符;

4、  |  或者的意思;

例如:

egrep   "aa|bb|cc"   /luo/txt   译为:寻找文本文件中aa字符或者bb字符或者cc字符;

5、   \b  表示的是\b前面的单词边界,\bx\b表示的是x前后均有单词边界;

例如:

egrep  "\baa\b"   /luo.txt    译为:寻找匹配文本文件中带有aa字符,并且aa前后都由单词边界,即空格;


以上.......

(本篇完)


祝:幸福!

罗贵

2019-03-11于深圳

你可能感兴趣的:(SEHLL脚本之正则表达式)