linux中正则表达式简介

时间:2022-12-03 19:11:38

1.正则表达式

正则表达式(Regular Expression,简写RE)是通过一些特殊字符的排列组成。正则表达式并不是一个工具程序,而是一种字符串处理的标准依据。如果想要使用正则表达式来处理字符串,就必须使用支持正则表达式的工具程序才行,这类工具有很多,比如sed,awk,grep等。值得注意的是,linux中ls/cp这样的工具并不支持正则表达式,所以他们只能使用shell中自带的通配符,比如*,?符号等。正则表达式和通配符是两回事哦

备注:*表示零到多个任意字符;?表示一个任意字符。


2.正则表达式按照不同的严谨程度分为基础正则表达式与扩展正则表达式。


3.基础正则表达式的RE字符

  • ^word   表示待查找的字符串word在行首
  • word$   表示待查找的字符串word在行尾
  • .             点号表示一定有一个任意字符
  • \             转义字符
  • *            重复零个到无穷多个的前一个字符
  • [list]      匹配只要包含list中任意RE字符的字符串
  • [n1-n2]  n1和n2可以是数字亦可以是字母,匹配包含了n1到n2区间中任意一个字符的字符串
  • [^list]    匹配不包含list中任意RE字符的字符串
  • \{n,m\}   表示连续n到m个前一个RE字符
  • [:alnum:]    表示英文大小写字符及数字
  • [:alpha:]     表示任何英文大小写字符
  • [:digit:]        代表任意数字字符
  • [:lower:]      代表小写字母,即a-z
  • [:upper:]     代表大写字符,即A-Z
备注:[:alpha:]、[:upper:] 等这样的RE字符,必须配合[]使用。例如[[:alnum:]]表示[0-9a-zA-Z],若单用[:alnum:]则表示匹配包含:alnum:中任意一个字符的字符串。

4.扩展正则表达式RE字符
  • +     重复一个或一个以上的前一个RE字符
  • ?     零个或一个的前一个RE字符
  • |       用或的方式找出数个字符串
  • ()     字符串组
  • ()+   多个字符串组
备注:grep默认仅支持基础正则表达式,如果要使用扩展正则表达式,需要使用grep -E,或者egrep。其中egrep和grep -E是同一个东西。