简而言之,正则表达式是一种符号表示法,被用来识别文本模式。在某种程度上,它们与匹配文件和路径名的shell通配符比较相似,但其规模更庞大。许多命令行工具和大多数对的编程语言都支持正则表达式,以此来帮助解决文本操作问题。但不同工具以及不同语言之间的正则表达式则略有差异。
提到正则表达式,不得不谈到grep程序——相当于我们的老朋友。grep程序会在文本文件中查找一个指定的正则表达式,并把匹配行输出列标准输出。我们可以使用grep程序查找固定的字符串,同时,grep程序已这样的方式来接受选项和参数。为了更好的探究grep程序,我们可以创建一些文本文件来搜寻,然后就可以对文件列表执行简单的搜索。通过各种grep选项来搜寻匹配项或者不匹配项的文件列表。
它可能看起来并不明显,但是grep程序一直使用了正则表达式,虽然是非常简单的例子。这个正则表达式“bzip”意味着匹配项所在行至少包含4个字符,并且安照“b”、“z”、“i”、“p”的顺序出现在匹配行的某处,之间没有其他的字符。字符串“bzip”中的所有字符都是原义字符,因为它们匹配本身。除了原义字符外,正则表达式也可能包含元字符,其被用来指定更加复杂的匹配项。正则表达式由^、$、*等固定符号组成,其他所有字符都被认为是原义字符。个别情况下,反斜杠会被用来创建元系列,也允许元字符被转义为原义字符,而不是解释为元字符。
如果我们在正则表达式中包含它,它将会匹配在此位置的任意一个字符。在正则表达式中,插入符号和美元符号会被看作是锚点。这意味着正则表达式只有在文本行的开头或末尾找到时,才算发生一次匹配。
另外,除了能在正则表达式中的给定位置匹配任意符之外,通过使用中括号表达式,我们能够指定一个字符集合(包含在不加括号的情况下会被解释为元字符的字符)来被匹配。在两种情况下,会在中括号表达式中使用元字符, 并且有着不同的含义,第一个元字符是插入字符,其被用来否定;第二个是连字符字符,其被用来表示一个字符区域。如果 在正则表达式中的第一个字符是插入字符,则剩余的字符则被看作是不会在给定的字符位置出现的字符集合。