BBS水木清华站∶精华区
Why Regular Expression
Regular Expression 是一种字串表达的方式. 使用者可使用 一个简短的 Regular
Expression 来表示 "具有某特徵″ 或者 "复杂难以描述″的所有字串. 而日常资料
处理中, 最常进行的工 作是『从档案中找出具有某特徵的字串, 再加以处理(列印,置
换, 计算...)』. 此时, Regular Expression 便可派上用场. 使用一 个简短的
Regular Expression 便可完全指定需要加以处理的资料 , 避免反覆判断找寻的困扰.
譬如 :
若使用 MS-DOS 中文字编辑器 edit 的找寻功能, 可来 找出档案中所有的
``prg1.c''; 但 edit 却无法一次同 时找寻字串``prg1.c''、``prg2.c'' ... 或
``prg8.c''; 必需 反覆执行八次找寻的动作.
可是在 UNIX 中的 vi , 使用一个 Regular Expression `` prg[0-8]\.c'' 便可同时
表示上述八个字串, 如此一次就可找出指定的所有字串.
可见 Regular Expression 确实十分便利. 然而, MS-DOS 下许多 工具的设计并不支援
解读 Regular Expression. 但 UNIX 环境下除 了 vi 外, 还有许多工具都接受
Regular Expression, 如 : grep、sed、awk、csplit... . 使用这些工具时, 便可应
用 Regular Expression 来指定欲找寻的字串; 并可配合这些工具的 其它功能将找寻
到的资料进一步地加以处理.
Regular Expression 的特色是简短且表达力强. 它所表达的可以 是某一特定的字串,
也可以是具有某一共同特徵的"所有"字串(如上 例). Regular Expression 中定义了一
组特殊字元, 它们代表著某些 特别的意义; 使用者可藉这些特殊字元来表示字串的下
列特徵 :
1. 描述组成字串的元素(components) : 例 如 : Regular Expression ``[Tt]he''
代表字串 ``The'' 或 ``the''.
2. 限制字串出现的位置 : 例 如 : Regular Expression ``^The'' 代表『出现於行
首』的字串 ``The''.
由於 Regular Expression 具有极佳的字串表示能力. 往後, 读者若 能多利用 UNIX
上接受 Regular Expression 的工具, 且灵活应用 Regular Expression; 则可避免撰
写程式进行复杂字串判断(parsing) 的麻烦. 如此, 才能真正发挥各工具的的功能, 减
轻资料处理时的负 担, 并增加资料处理的效率.
----------------------------------------------------------------------------
Note 1
UNIX中定义了数种字串表达方式, Regular Expression 及 Extended Regular
Expression 是常见的二种. 另一种是使用於Shell命令列, 将 参数展
开}(expand)成档案名称的"Pattern Matching Notation", 这种 表示法与
Regular Expressions 的语法差异较大, 甚至有数项用法相左, 故位未列入本文
讨论以免读者混淆.
BBS水木清华站∶精华区