📄 00000002.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER> <BR>使用 Regular Expression 时的注意事项 <BR> <BR>学习 Regular Expression 除了应了解其中特殊字元所代表的意义外; 在实际应用时, <BR>也有一些应该注意的事项. 倘若忽略了这些特点, 往往会 造成字串无法正确比对, 而 <BR>导至结果错误. 本节除了介绍这些应予留心的事 项外, 也提供各软体在解读 Regular <BR>Expression, 进行字串比对时所依据的 二项重要原则. <BR> <BR> 1. 接受 Regular Expression 的指令或工具, 它们找寻字串时系按照下列二原则: <BR> <BR> 1. 由左往右进行字串找寻. <BR> 2. 尽可能寻找最长且合於所指定 Regular Expression 的字串. <BR> + 例如 : 应用 Regexp `` a.*b''(代表以"a"开头以"b"结尾 的任意字 <BR> 串),於资料列 ``12 3ab0aab4 56'' 中找寻合於该条件 的字串. <BR> <BR> 该资料列中合於 Regexp `` a.*b'' 的字串有 ``ab'', ``aab'', <BR> ``ab0aab''. 但按上列二原则「由左往右找, 且尽可能寻 找最长的字 <BR> 串」 实际上被找到的字串将为 ``ab0aab''. <BR> <BR> 2. Regular Expression 有许多不同的版本 UNIX 中不同的指令对同一个 Regular <BR> Expression 可能会有不同的解释. 原因是这些指令无法完全解释前节所述 <BR> Regular Expression 中所有的特殊 字元. 这就是所谓 "Regular Expression 有 <BR> 许多不同的版本" <BR> <BR> o 例如 : egrep 中对 Regexp `` an?'' 解释成字串 ``a'' 或 ``an''. 但 <BR> vi 中对 Regexp `` an?'' 只解释成字串 ``an?''. 因为 vi 中并不把 `` <BR> ?'' 当成 Regular Expression 的特殊字原解释. <BR> Appendix A 附表 中列出 UNIX 中常用的指令及它所接受的 Regular Expression <BR> 特殊字元. <BR> <BR> 3. 勿将Shell上所使用的字串表示法(Pattern Matching Notation) 与 Regular <BR> Expression 混淆. <BR> Regexp `` a*'' 用以表示一个完全由字元 "a" 所组成的任意长度字串. 但在 <BR> Shell 命令列上执行 ``ls a*'', 却会列出目前工作目录下所有以 "a" 开头的档 <BR> 案与子目录.两者对 ``a*'' 的解释并不相同. 因为 Shell 所接受的是另一种名 <BR> 为 ``Pattern Matching Notation'' 的表示法, 两者并不相同请勿混淆. <BR> <BR> 4. 在含有中文之文字档中, 使用 Regular Expression 进行字串找寻时, 可能会发 <BR> 生错误. <BR> o 譬如 : 找寻左大括号"{", 结果中文的"程"也被找出. 这并非 Regular <BR> Expression 出了错误. 因每个中文字都是由 2 个 bytes 组成, 而中文`` <BR> 程''字的後一个 byte 恰 被解释成``{''.所以除非所使用的指令有自动避 <BR> 开中文字的功能, 否则中文字的後一个 byte 被误判的机率并不低. 故读者 <BR> 在含有中文文字的档案中, 进行字串找寻并置换时, 最好是逐次确认後再行 <BR> 置换. <BR> <BR> 5. 并非所有软体都接受 Regular Expression(有解读 Regular Expression 的能 <BR> 力). 一般而言,就算某软体(工具)可接受 Regular Expression , 它也并非把所 <BR> 有的字 串或参数当成 Regular Expression 解释. 读者使用 Regular <BR> Expression 时, 应先确定该软体会把该些字串当成 Regular Expression 解释 <BR> (可翻查其 manual page), 如此才可获得正确的结果. <BR> <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -