Linux下的正则表达式
文章目录
- 常用的正则表达式:
- POSIX基本正则表达式
- POSIX扩展正则表达式
- 正则表达式模式区分大小写。
- 正则表达式认可的特殊字符:. * [ ] ^ $ { } + ? | ( ) \,如果要使用这些特殊字符中的一个作为文本字符,需要转义(escape)它。(反斜杠和正斜杠在正则表达式模式中使用需要转义)
^定义从数据流中文本行开头开始。
$定义结尾定位。
^$结合在一起可以排除掉空行。
**.**点匹配除换行符外的任何单位字符,必须匹配一个字符。(空格作为字符记)
使用方括号定义为字符类。
在字符类范围开头添加脱字符(^)就可以使用否定字符类。
使用短画线符号可以在字符类中使用一系列字符范围。([0-9]);可以在单个字符类中指定多个非连续的范围:(a—ch-m)。
*匹配任意次。
?表示其前面的字符可以不出现或出现一次。
+表示其前面的字符可以出现一次或多次,但必须出现至少一次。
可以使用大括号指定对可重复的正则表达式的限制。这通常称为间隔(interval)。可以用两种格式表示间隔:(awk程序使用间隔时,必须使用–re-interval命令行选项。)
- m:该正则表达式正好出现m次。
- m,n:该正则表达式出现最少m次,最多n次。
管道符允许用逻辑or公式指定正则表达式检查数据流时使用的两个或多个模式。如果任何一个模式与数据流文本匹配,该文本通过。如果没有一个模式匹配,数据流文本失败。:
expr1|expr2...
1 2 3 4 5 6
$echo "The cat is asleep" | awk '/cat|dog/{print $0}' The cat is asleep $echo "The dog is asleep" | awk '/cat/dog/{print $0}' The dog is asleep $echo "The sheep is asleep" | awk '/cat|dog/{print $0}' $
正则表达式模式也可以使用圆括号分组。
特殊字符类
类 | 描述 |
---|---|
[[:alpha:]] | 匹配任意字母字符,大写或小写 |
[[:alnum:]] | 匹配任意字母数字字符,0-9,A-Z或a-z |
[[:blank:]] | 匹配空格或者制表字符 |
[[:digit:]] | 匹配0-9之间的数字 |
[[:lower:]] | 匹配任意小写字母 |
[[:print:]] | 匹配任意可打印字符 |
[[:punct:]] | 匹配任意空白字符 |
[[:space:]] | 匹配任意空白字符 |
[[:upper:]] | 匹配任意大写字母字符 |