[内容] 常用的 Perl 兼容正则表达式 (PCRE)

1) \b 匹配单词边界处的空格字符,使用案例:# echo “ mingyuzhu ” | grep -P “\bmingyuzhu\b”
2) \B 匹配单词边界处的非空格字符,使用案例:# echo “mingyuzhu” | grep -P “\Bingyuzh\B”
3) \K 不要将 \K 左边的内容放进 $& (匹配的内容),也就是不会对 \K 左边的内容进行匹配
4) \A 匹配行首,使用案例:# echo mingyuzhu | grep -P “\Am”
5) \z 匹配行尾,使用案例:# echo mingyuzhu | grep -P “u\z”
6) \Z 匹配行尾或者匹配行尾换行符前面,使用案例:# echo mingyuzhu | grep -P “u\Z”
7) \G 全局匹配成功,位移指针自然会后移。全局匹配失败,位移指针会重置。如果匹配失败同时加上 \c 修饰符那位移指针不会变化

$txt = "123eternalcenter456";
$txt =~ /\G\d\d\d/gc; 
print "matched $&: ",pos $txt,"\n";

matched 123: 3


补充:
1) $& 代表匹配的内容
2) $` 代表匹配的内容前面的内容
3) $’ 代表匹配的内容后面的内容

8) 结尾处的 \g 全局匹配,当要匹配的内容出现时不会停下而是继续匹配下去,直到检查完全文。且每次匹配成功后都会记下指定位,每次记下的指定位在匹配的字符的左边,下次再匹配时就会从这个指定位开始匹配。每次的匹配位置可以通过 pos() 函数获取,如果匹配失败位移指针则会重置,pos 将返回 undef。如果和 \c 修饰符组合成 \gc, 匹配失败则不重置位移指针而是将位移指针向后移动 1 位,直到移动到最后 1 位。一般在匹配位置的最后面,案例:

$txt = "123eternalcenter456";
$txt =~ /\d\d\d/g; 
print "matched $&: ",pos $txt,"\n";

matched 123: 3


补充:
1) $& 代表匹配的内容
2) $` 代表匹配的内容前面的内容
3) $’ 代表匹配的内容后面的内容

9) \w 匹配单词,等价于 [[:alnum:]] 10) \W 匹配非单词,等价于 [^[:alnum:]]
11) \s 匹配空格字符,等价于 [[:space:]]
12) \S 匹配非空格字符,等价于 [^[:space:]]
13) \d 匹配数字,等价于 [0-9]
14) \D 匹配非数字,等价于 [^0-9]
15) \n 匹配换行
16) \N 不匹配换行,等价于 [^\n]

[内容] 正则表达式介绍

内容一:基础正则表达式 (BRE)

1.1 简介

Linux 基础的正则表达式

1.2 特点

?、*、(、)、{、} 等元字符前面必须添加转义符号 \ (斜杠)才能起作用,否则将被视为普通的字符

1.3 使用案例

1) 通过 grep 命令使用
2) 通过 sed 命令使用

内容二:扩展正则表达式 (ERE)

2.1 简介

在 Linux 基础正则表达式 (BRE) 上有所扩展

2.2 特点

?、*、(、)、{、} 等元字符前面不用添加转义符号 \ (斜杠)就能起作用

2.3 使用案例

1) 通过 egrep 命令使用
2) 通过 grep 命令加 -E 参数 (grep -E) 使用
3) 通过 sed 命令加 -E 参数(sed -E)
4) 通过 sed 命令加 -r 参数 (sed -r) 使用

内容三:Perl 兼容正则表达式 (PCRE)

3.1 简介

在 Linux 扩展正则表达式 (ERE) 上又有所扩展,并加入了 Perl 语言的一些特性

3.2 特点

支持 lookahead 断言、lookbehind 断言、递归模式、命名捕获组等高级功能

3.3 使用案例

通过 grep 命令加 -P 参数 (grep -P) 使用

[内容] Shell 脚本中 declare、typeset、local 的作用 (设置变量)

内容一:declare、typeset 和 local 的作用

1) declare、typeset 和 local 的作用都是声明脚本中的变量
2) local 只能用在函数内部
3) declare、typeset 和 local 的选项一样

内容二:declare、typeset 和 local 的使用格式

declare <OPTION> <NAME1>=<VALUE1> <NAME2>=<VALUE2> ......

内容三:declare、typeset 和 local 的常用选项

1) -g 指定要声明的变量为全局变量而不是局部变量
2) -I 给变量赋值时将值转化为小写
3) -u 给变量赋值时将值转化为大写