⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000002.htm

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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -