系统通配符&&基础正则&&扩展正则区分
一:系统通配符
符号 | 含义 | 示例 |
---|
* | 模糊匹配所有内容 | a*b,a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如 aabcb, axyzb, a012b, ab |
{} | 生成连续的序列; 生成不连续的序列 | {1…10};{a…z};{1,2} ;{1…10…2}奇数序列;{2…10…2}偶数序列 |
? | 表示任意单个字符(同正则的.) | a?b,a与b之间有且只有一个字符, 可以是任意 |
[list] | 匹配 list 中的任意单个字符 | a[xyz]b,a与b之间必须也只能有一个字符, 但只能是 x 或 y 或 z, 如 axb, ayb, azb。 |
[!list] | 匹配除 list 中的任意单一字符 | a[!0-9]b,a与b之间必须也只能有一个字符, 但不能是阿拉伯数字, 如 axb, aab, a-b。 |
{s1,s2,…} | 匹配 s1 或 s2 (或更多)中的一个字符串 | a{abc,xyz,123}b,a与b之间只能是abc或xyz或123这三个字符串之一 |
二:基础正则
元字符 | 作用 |
---|
^ | 匹配输入字符串的开始位置。除非在方括号表达式中使用,表示不包含该字符集合。要匹配“”字符本身,请使用“” |
$ | 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则“KaTeX parse error: Undefined control sequence: \n at position 6: ”也匹配‘\n或‘\r’。要匹配“”字符本身,请使用"\ $" |
. | 匹配除“\r\n”之外的任何单个字符 |
\ | 将下一个字符标记为特殊字符、原义字符、向后引用、八进制转义符。例如,‘n’匹配字符“n”。 ‘\n’匹配换行符。序列‘\ \’匹配“\”,而‘\ (’则匹配“(” |
* | 匹配前面的子表达式零次或多次。要匹配“*”字符,请使用“\ *” |
[] | 字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a” |
[^] | 赋值字符集合。匹配未包含的一个任意字符。例如,“[ ^abc ] ”可以匹配“plain”中“plin”中的任何一个字母 |
[n1-n2] | 字符范围。匹配指定范围内的任意一个字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意一个小写字母字符。注意:只有连字符(-)在字符组内部,并且出现在两个字符之间时,才能表示字符的范围;如果出现在字符组的开头,则只能表示连字符本身 |
{n} | n 是一个非负整数,匹配确定的 n 次。例如,“o\ {2\ }”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个 o |
{n,} | n 是一个非负整数,至少匹配 n 次。例如,“o\ {2,\ }”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有 o。“o\ {1,\ }”等价于“o+”。“o\ {0,\ }”则等价于“o*” |
{n,m} | m 和n 均为非负整数,其中 n<=m,最少匹配 n 次且最多匹配 m 次 |
总结:{} 用于表示前一个字符出现的次数
{n,p} 用于输出偶数行(行数)
[] 表示集合,集合里取一个进行匹配
三:扩展正则
元字符 | 作用与示例 |
---|
+ | 作用:重复一个或者一个以上的前一个字符 示例:执行“egrep -n ‘wo+d’ test.txt”命令,即可查询"wood" “woood” "woooooood"等字符串 |
? | 作用:零个或者一个的前一个字符 示例:执行“egrep -n ‘bes?t’ test.txt”命令,即可查询“bet”“best”这两个字符串 |
| | 作用:使用或者(or)的方式找出多个字符 示例:执行“egrep -n ‘of|is|on’ test.txt“ 命令即可查询"of"或者"if"或者"on"字符串 |
() | 作用:查找“组”字符串 示例:“egrep -n ‘t(a|e)st’ test.txt”。“tast”与“test”因为这两个单词的“t”与“st”是重复的,所以将“a”与“e”列于“()”符号当中,并以“|”分隔,即可查询"tast"或者"test"字符串 |
()+ | 作用:辨别多个重复的组 示例:“egrep -n ‘A(xyz)+C’ test.txt”。该命令是查询开头的"A"结尾是"C",中间有一个以上的 "xyz"字符串的意思 |
四: shell元字符
shell除了有通配符之外,由shell负责预先先解析后。将处理结果传给命令行之外。shell另一系列自己的其它特殊字符。
字符 | 说明 |
---|
= | 变量名=值,为变量赋值。注意=左右紧跟变量名和值,中间不要有空格 |
$ | 变量值替换,
变
量
名
替
换
为
s
h
e
l
l
变
量
的
值
;
为
避
免
在
文
本
连
接
时
混
淆
。
请
使
用
变量名替换为shell变量的值;为避免在文本连接时混淆。请使用
变量名替换为shell变量的值;为避免在文本连接时混淆。请使用{变量名};$0…$9 代表shell文件的參数。 |
> | prog > file 将标准输出重定向到文件。 |
>> | prog >> file 将标准输出追加到文件。 |
< | prog < file 从文件file中获取标准输入 |
| | 管道命令,例:p1 | p2 将p1的标准输出作为p2的标准输入 |
& | 后台执行命令。最大优点是无需等待命令执行结束,就能够在同一命令行下继续输入命令 |
() | 在子shell中运行命令 |
{} | 在当前shell中运行命令。或用在变量替换的界定范围(比如上面的${变量名}使用方法)。 |
; | 命令结束符。比如p1;p2表示先运行p1,再运行p2 |
&& | 前一个命令运行成功后,才继续运行下一个命令。例:p1 && p2 ;若p1运行成功后,才运行p2,反之,不运行p2; |
|| | 前一个命令运行失败后。才继续运行下一个命令。例:p1 || p2 ;若p1运行成功后。不运行p2,反之,才运行p2; |
! | 运行历史记录中的命令 |
~ | home文件夹 |
字符 | 说明 |
---|
‘’ | 单引号,硬转义。其内部全部的shell元字符、通配符都会被关掉。注意,硬转义中不同意出现’(单引號)。 |
“” | 双引,软转义,其内部仅仅同意出现特定的shell元字符($)用于变量值替换、`用于命令替换、\用于转义单个字符 |
| |
“” | 双引,软转义,其内部仅仅同意出现特定的shell元字符($)用于变量值替换、`用于命令替换、\用于转义单个字符 |
\ | 反斜杠,转义。去除其后紧跟的元字符或通配符的特殊意义。 |