目录
1.元字符
元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符或表达式,可以使用()括起来指定)在目标对象中的出现模式。
2.量词
非贪婪匹配:一个%为非贪婪匹配,即匹配最短结果。%从右到左进行非贪婪匹配,匹配什么呢? 匹配已 .的字符。 那么当然是匹配到了.com 然后执行删除匹配到的字符。结果就是(这里的 “.” 相当于定界符。而“”是通配符)。例如:
非贪婪匹配:
现在有一个字符串v以下是非贪婪匹配的shell脚本写法
v=jpp.shell.com
echo ${v%.*}
最终输出的结果为:jpp.shell
贪婪匹配:两个%为贪婪匹配,即匹配最长结果。
贪婪匹配:
echo ${v%%.*}
输出结果:jpp
3.转义符
转义:使用转义符引用单个字符,从而使其表达单纯的字符的字面含义。
shell中的转义符为"\\".
#!/bin/bash
echo -e "It is a test \n"
echo It is a test
echo -e "\"It is a test\""
read name
echo "$name is a good man"
echo -e "OK! \c"
echo "It is a test"
echo '$name\"'
echo `date`
注意:字符串写单引号双引号不写效果都一样
\n换行 \c不换行 \"双引号
4.分组
定义分组的三种形式:
- (exp) :把括号内的正则作为一个分组,系统自动分配组号,可以通过分组号引用该分组;
- (?P<name>exp) :定义一个命名分组,分组的正则是exp,系统为该分组分配分组号,可以通过分组名或分组号引用该分组;
- (?:exp) :定义一个不捕获分组,该分组只在当前位置匹配文本,在该分组之后,无法引用该分组,因为该分组没有分组名,没有分组号,也不会占用分组编号;
1,分组编号
在正则表达式中,分组编号是自动进行的。当使用圆括号表示分组时,从正则表达式的左边开始看,看到的第一个左括号 “(” 表示第一个分组,第二个 "(" 表示第二个分组,依次类推,需要注意的是,有一个隐含的全局分组(分组编号是0),就是整个正则表达式。默认情况下,正则表达式为每个分组自动分配一个组号,规则是:组号从1开始,从左向右,组号依次加1(base+1),例如,第一个分组的组号为1,第二个分组的组号为2,以此类推。
2,分组命名
分组不仅有编号,还能为分组设置名称,在Python中,使用(?P<name>exp)为正则表达式exp设置别名。
3,无捕获分组
无捕获分组没有名称,也没有编号,因此,无法引用无捕获分组,无捕获分组不会占用分组编号。