正则表达式

正则表达式是一种描述的方法,一种小型的语言,可表示某种样式或若干种样式的组合, 它的威力在于仅需几个简单的符号,便可代表许多字符串共同的样子。这是固定样式无法比 拟的,例如,样式 Shell,只能比对固定的字符串,作用不大,但若改成 sh*,却可比对 she、 Shell、short 等多种字符串,涵盖面较大,因此,发挥的作用较强。

以下介绍正则表达式的语法:

.一点代表一个字符 . 代表任意的字符。

例 1:样式 .T. ,代表 3 个字符,中间是 T,左右两边是任意的一个字符。

例 2:...

代表字符长度是 3 的字符串。若想比对 . 这个字符本身,需加上转义字符(\),写成\.。 例如:样式 data\....代表 data.后接 3 个字符,如 data.txt、data.cfg、data.123 等,都符合这个样 式,但 data1234 就不符合了,因为 4 个点最左边的那个点,已经用\转义其特殊意义,还原为. 这个字符本身,因此,\....和 1234 比对不符。

^ 在行首

^ 代表位置在行的开头。

例如:样式 ^Jack,代表 Jack 应出现在行首,才算符合样式。像 Jack and Marry 123 就 符合此样式,但 Hi Jack 就不符合,因为 Jack 没有出现在该行的最前面。 $在尾部 13 $ 代表位置在行的最后面。

例如:样式 123$,代表在行的最后面是 123。像 Jack and Marry 123 即符合此样式。

[...] 字符集合 [...] 代表字符串行中的一个字符(长度为 1 个字符)。

例 1:样式 [ABc],代表 A 或 B 或 c 这 3 个字符中的一个。

例 2:[Ss]ame 代表 Same 或 same。

以下是常见的用法

^ 出现在括号里的第一个位置,代表“非/不是”之意。

* 出现 0 个以上

* 代表前面的(左邻)字符有 0 个或 0 个以上。

例如:样式 aA*c,代表 A 这个字符可能出现 0 个或 0 个以上。例如:ac、aAc、aAAc、 aAAAc 都符合此样式。

\{...\} 指定符合的个数

指定前面的(左邻)字符的个数。

例如:\{3,5\} 表示前面的字符有 3~5 个。[a-z]\{3,5\}代表以小写字母组成的字符串,长 度是 3~5。

\(...\) 把比对符合的字符串暂时保存起来

例如:H\(...\)y 表示要保存 H 和 y 之间的 3 个字符。

若要提取保存的字符串,可用位置参数,\1 代表第一个保存的字符串,\2 代表第二个, 其他类推。

发表评论

后才能评论