阅读901 返回首页    go 阿里云 go 技术社区[云栖]


正则表达式必知必会-学习笔记

1.元字符'.'用来匹配一个任意字符
2.元字符'\'用来转义字符,与其他元字符在一起时,匹配元字符本身
3.元字符'[]'用来匹配一组字符中的任意一个,如'[abcd]',可以用元字符'-'来表示一个区间,例如'[A-Z]',在字符集合意外的地方,'-'字符表示一个普通的字符,不需要转义,在字符集合里面使用'^'表示取非,例如'[^0-9]',表示除数字之外的任意一个字符
4.匹配空白字符。Windows系统中'\r\n\r\n'匹配空白行,Linux系统中'\n\n'匹配空白行
5.匹配特定字符类别。'\d'表示任意一个数字字符,'\D'表示任意一个非数字字符,'\w'任意一个数字、字母、下划线字符,'\W'则相反,'\s'匹配任意一个空白字符,'\S'则相反。例如:
zhang@DESKTOP-CO960ET ~
$ echo "hello" | grep -P '\w'
hello
zhang@DESKTOP-CO960ET ~
$ echo "hello" | grep -P '\D'
hello
6.使用POSIX字符类。[:alnum:]匹配任意一个字母或数字;[:alpha:]匹配任意一个字母;[:blank:]匹配空格或制表符;[:cntrl:]匹配控制字符;[:digit:]匹配任意一个数字;[:lower:]匹配任意一个小写字母;[:space:]匹配任意一个空白字符;[:upper:]匹配任意一个大写字母;[:xdigit:]匹配任意一个十六进制数字,等价于[a-fA-F0-9]。例如:
zhang@DESKTOP-CO960ET ~
$ echo "sss" | grep -P '[[:xdigit:]]'

zhang@DESKTOP-CO960ET ~
$ echo "sssA" | grep -P '[[:xdigit:]]'
sssA

zhang@DESKTOP-CO960ET ~
$ echo "12_A" | grep -P '[[:lower:]]'

zhang@DESKTOP-CO960ET ~
$ echo "12_A" | grep -P '[[:upper:]]'
12_A

zhang@DESKTOP-CO960ET ~
$ echo "12_A" | grep -P '[[:digit:]]'
12_A
7.元字符'+'放在字符或字符集合后面用来匹配一个或多个字符,与'\'在一起时,用来匹配'+'本身。例如:
zhang@DESKTOP-CO960ET ~
$ echo "a2" | grep -P -o '\d+'
2

zhang@DESKTOP-CO960ET ~
$ echo "a" | grep -P -o '\d+'

zhang@DESKTOP-CO960ET ~
$ echo "a" | grep -P -o '[[:digit:]]+'

zhang@DESKTOP-CO960ET ~
$ echo "a2" | grep -P -o '[[:digit:]]+'
2

zhang@DESKTOP-CO960ET ~
$ echo "a2" | grep -P -o '[a2]+'
a2

zhang@DESKTOP-CO960ET ~
$ echo "a22" | grep -P -o '[a2]+'
a22
8.元字符'*'放在一个字符或字符集后面,就可以匹配该字符或字符集合连续出现零次或多次的情况,与'\'一起使用时,匹配自身;元字符'?'放在字符或字符集合后面时,在匹配一个字符的零次或1次出现,与'\'一起使用时,用来匹配自身。例如:
zhang@DESKTOP-CO960ET ~
$ echo "a" | grep -P '2*'
a

zhang@DESKTOP-CO960ET ~
$ echo "a" | grep -P '2?'
a

zhang@DESKTOP-CO960ET ~
$ echo "a" | grep -P '2+'
9.匹配的重复次数。元字符'{}'放在字符或字符集合后面,表示匹配的次数。具体:'{n}',表示匹配n次;'{n,m}'表示匹配次数为闭区间[n,m];'{n,}'表示匹配至少n次。与'\'一起使用时,表示'{'、'}'字符自身
10.防止过度匹配。贪婪型元字符'*'对应的懒惰型为'*?','+'对应的为'+?','{n,}'对应的为'{n,}?'。区别见例子:
zhang@DESKTOP-CO960ET ~
$ echo "AAhelloAA and AAworldAA" | grep -P -o 'AA.*?AA'
AAhelloAA
AAworldAA

zhang@DESKTOP-CO960ET ~
$ echo "AAhelloAA and AAworldAA" | grep -P -o 'AA.*AA'
AAhelloAA and AAworldAA

最后更新:2017-04-28 00:00:41

  上一篇:go 2.Spring常用配置—5.事件
  下一篇:go 2.Spring常用配置—4.Profile