Linux下Shell编程——正则表达式基础与扩展
正则表达式基础
Linux Shell以一串字符作为表达式向系统传达意思。元字符(Metacharacters)是用来阐释字符表达式意义的字符,简言之,元字符就是描述字符的字符,它用于对字符表达式的内容、转换及各种操作信息进行描述。正则表达式是由一串字符和元字符构成的字符串,简称RE(Regular Expression)。正则表达式的主要功能是文本查询和字符串操作,它可以匹配文本的一个字符或字符集合。
正则表达式完成了数据的过滤,将不满足正则表达式定义的数据拒绝掉,剩下与正则表达式匹配的数据。
正则表达式的基本元素包括普通字符和元字符。POSIX标准将正则表达式分为两类:基本的正则表达式和扩展的正则表达式,大部分Linux应用和工具仅支持基本的正则表达式。
基本的正则表达式元字符集合及其意义:
* #0个或多个在*字符之前的那个普通字符
. #匹配任意字符
^ #匹配行首,或后面字符的非
$ #匹配行尾
[] #匹配字符集合
\ #转义符,屏蔽一个元字符的特殊意义
\<\> #精确匹配符号
\{n\} #匹配前面字符出现n次
\{n,\} #匹配前面字符至少出现n次
\{n,m\} #匹配前面字符出现n~m次
空行的表示方法: ^$
匹配只包含一个字符的行: ^.$
Linux系统对大小写是敏感的,并且支持字母排序,因此,Linux中有大写字母序列和小写字母序列,两者是分开的。
例:匹配字母
[a-z] #所有小写字母
[A-Z] #所有大写字母
[b-p] #小写字母b~p
“^”符号表示匹配行首,但是,“^”符号放到”[]”符号中就不再表示匹配行首了,而是表示取反符号。如:[^b-p]表示匹配不在b~p范围内的字符。
\<the\>正则表达式精确匹配the这个单词,而不匹配包含the字符的单词,如then。
正则表达式的扩展
除了正则表达式的元字符之外,awk和Perl等Linux工具还支持正则表达式扩展出来的一些元字符。
扩展的正则表达式元字符及其意义:
? #匹配0个或1个在其之前的那个普通字符
+ #匹配1个或多个在其之前的那个普通字符
() #表示一个字符集合或用在expr中
| #表示“或”,匹配一组可选的字符
Linux Shell以一串字符作为表达式向系统传达意思。元字符(Metacharacters)是用来阐释字符表达式意义的字符,简言之,元字符就是描述字符的字符,它用于对字符表达式的内容、转换及各种操作信息进行描述。正则表达式是由一串字符和元字符构成的字符串,简称RE(Regular Expression)。正则表达式的主要功能是文本查询和字符串操作,它可以匹配文本的一个字符或字符集合。
正则表达式完成了数据的过滤,将不满足正则表达式定义的数据拒绝掉,剩下与正则表达式匹配的数据。
正则表达式的基本元素包括普通字符和元字符。POSIX标准将正则表达式分为两类:基本的正则表达式和扩展的正则表达式,大部分Linux应用和工具仅支持基本的正则表达式。
基本的正则表达式元字符集合及其意义:
* #0个或多个在*字符之前的那个普通字符
. #匹配任意字符
^ #匹配行首,或后面字符的非
$ #匹配行尾
[] #匹配字符集合
\ #转义符,屏蔽一个元字符的特殊意义
\<\> #精确匹配符号
\{n\} #匹配前面字符出现n次
\{n,\} #匹配前面字符至少出现n次
\{n,m\} #匹配前面字符出现n~m次
空行的表示方法: ^$
匹配只包含一个字符的行: ^.$
Linux系统对大小写是敏感的,并且支持字母排序,因此,Linux中有大写字母序列和小写字母序列,两者是分开的。
例:匹配字母
[a-z] #所有小写字母
[A-Z] #所有大写字母
[b-p] #小写字母b~p
“^”符号表示匹配行首,但是,“^”符号放到”[]”符号中就不再表示匹配行首了,而是表示取反符号。如:[^b-p]表示匹配不在b~p范围内的字符。
\<the\>正则表达式精确匹配the这个单词,而不匹配包含the字符的单词,如then。
正则表达式的扩展
除了正则表达式的元字符之外,awk和Perl等Linux工具还支持正则表达式扩展出来的一些元字符。
扩展的正则表达式元字符及其意义:
? #匹配0个或1个在其之前的那个普通字符
+ #匹配1个或多个在其之前的那个普通字符
() #表示一个字符集合或用在expr中
| #表示“或”,匹配一组可选的字符
相关推荐
wangzhaotongalex 2020-10-20
rechanel 2020-11-16
cshanzhizi 2020-10-16
luofuIT成长记录 2020-09-22
taomengxing 2020-09-07
MaggieRose 2020-08-19
jyj00 2020-08-15
MaggieRose 2020-07-04
modaiairen 2020-06-28
ziggurat 2020-06-28
JnX 2020-06-27
jyj00 2020-06-26
山水沐光 2020-06-25
shqhope 2020-06-23
eroshn 2020-06-21
码墨 2020-06-16
wyq 2020-11-11
TLROJE 2020-10-26
风雨断肠人 2020-10-13