正则表达式概述
概念:正则表达式(Regular Expression ,简称regexp)是一中描述字符串的语法规则,用于验证各种字符串是否匹配(Match)这个特征,进而实现高级的文本查找,替换,截取内容等操作,
适用范围:操作系统(Unix、Linux等)、编程语言(C、C++、Java、PHP、Python、JavaScript等)、服务器软件(Apache、Nginx)等。
2.正则表达式入门
全称:grep命令是global search a regular expression and print,以正则表达式全局搜索和答应的简称
由来:grep最初是ED编辑器的一条命令,后来发展一个独立的工具,
适用范围:grep支持对来自标准输入,管道(pipe)输入,以及文本文件的内容进行正则表达式搜索
2.3、元字符、文本字符和转义字符
正则表达式的构成:由元字符和文本字符两部分构成;
元字符:就是具有特殊含义的字符,如前面提到的“^”、“$”、“.”、“*”等;
文本字符:就是普通的文本,如字母和数字等;
匹配元字符:需要在前面加上转义字符“\”,如“^”。而“\”本身也属于元字符,用“\”转义。
2.4、分组
别名:分组又称为子模式、子匹配;
编写方式:用小括号“( )”来实现。
[[email protected] ~]$ grep -P --color ‘(root-){3}’
root-root-root-root-
root-root-root-root-
分组匹配结果表示方式:对于括号中的子表达式的匹配结果,可以用“\数字”来引用,数字是指第几个括号,如第1个括号的匹配结果就是“\1”,最大支持9个。
3.1、定位符
需要注意的是,在使用grep命令进行匹配时,只能按行依次匹配,不能实现跨换行符的多行匹配。另外,当需要匹配空行时,可以用“^$”表示。
3.2选择符
选择符:若要查找的条件有多个,只要其中一个满足即可成立时,可以用选择符“|”。该字符可以理解为“或”。
[[email protected] ~]$ grep -P --color ‘Linux|Unix’
Linux is Good, Unix is Good!
Linux is Good, Unix is Good!
3.3字符范围
字符范围:当需要匹配某个范围内的字符时,可用中括号“[ ]”和连字符“-”实现。且在中括号中还可以用反义字符“^”,表示匹配不在指定字符范围内的字符。
需要注意的是,字符“-”在通常情况下只表示一个普通字符,只有在表示字符范围时才作为元字符来使用。“-”连字符表示的范围遵循字符编码的顺序,如“a-Z”、“z-a”、“a-9”都是不合法的范围。
3.4、点字符和限定符
点字符“.”:用于匹配一个任意字符;
限定符(?、+、*、{ }):用于匹配某个字符连续出现的次数。