Skip to content

正则表达式

一、特殊符号

  • ^ $:分别表示文本的开始和结束
  • .:匹配除了换行符和回车符以外的任何单个字符,等价于[^\n\r]。
  • ?:匹配前面的子表达式零次或一次,等价于 {0,1}
  • *:匹配前面的子表达式零次或多次,等价于 {0,}。
  • +:*匹配前面的子表达式一次或多次,等价于 {1,}
  • |:*逻辑或。
  • \b:匹配一个单词边界,即字与空格间的位置。

二、Linux 中的正则表达式

2.1 相关基础

Linux 中的正则表达式一般以行为单位处理的,

POSIX 规范将正则表达式分成了两种:

  1. 基本正则表达式 (BRE, basic regular expression)
  2. 扩展正则表达式 (ERE, extended regular expression)

BRE和 ERE 的区别仅仅是元字符的不同:

  • BRE(基础正则表达式)只承认的元字符有:^ $ . [ ] * 其他字符识别为普通字符。
  • ERE(扩展正则表达式)则添加了( ) { } ? + | 等。

只有在用反斜杠 \ 进行转义的情况下,字符( ) { }才会在 BRE 中当做元字符处理,而在 ERE 中,任何元符号前面加上反斜杠反而会使其被当做普通字符来处理。

正则命令:grep、awk、sed