📄 00000005.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER> <BR>组成 Regular Expression 的元素 <BR> <BR>Regular Expression 是由普通字元、及一组具有特殊意义 的字元所构成. 本节主要介 <BR>绍各种特殊字元所代表的意义及 其用法. 读者学习时应留心 : 有时, 同一特殊字元, <BR>会因出 现在字串中不同的位置或连接其它特殊字元, 而有不同的意义. 本文中为有别 <BR>於一般的字串, 所有 Regular Expression 都以粗体字体表示, 且加注``Regexp''於其 <BR>前方. <BR> <BR>组成 Regular Expression 的元素及所代表的意义如下 : <BR> <BR> * [普通字元] 除了``.''、``[''、``]''、``*''、``+''、``?''、 ``|''、``^'' <BR> 、``$''、``{''、``}''、``\''、``<''、``>''、``(''、``)'' 外之所有字元. <BR> <BR> 由普通字元所组成的 Regular Expression 其意义与原字串字面意义相同. <BR> <BR> 例如: <BR> <BR> o 普通字元``A''也可当成一个 Regular Expression. Regexp ``A'' 与一般 <BR> 字元``A''代表相同的意义. <BR> o Regexp ``the'' 与一般字串``the''代表相同的意义. <BR> <BR> * [.] Metacharacter 用以代表任意一个字元. 须留心 UNIX Shell 中使用``?'' <BR> 表示任意一个字元, 使用``*''代表任意长度的字串(这是另一种称为 ``Pattern <BR> Matching Notation'' 的字串表示法). Regular Expression 中则使用``.'' 来 <BR> 代表``一个''任意字元(注 意: 并非任意长度的字串). 而 Regular Expression <BR> 中``*''另有 其它涵意, 并不代表任意长度的字串. <BR> <BR> 例如: <BR> <BR> o Regexp ``.'' 可用以代表任意一个字元. 如 ``A''、``1''、``+''、... <BR> o Regexp ``...'' 则代表一个由任意3个字元所的字串. 譬如 ``123''、 <BR> ``abc''、``# 1''、... <BR> <BR> * [^] 限制字串必须出现於行首. (用法见下例) <BR> <BR> * [$] 限制字串必须出现於行末. <BR> <BR> o [例如 :] Regexp `` ^The'' 用以表示所有出现於行首的字串``The''. <BR> Regexp `` The$'' 用以表示所有出现於行末的字串``The''. Regexp <BR> `` ^The$'' 则用以表示一个仅含字串``The''的资料列. Regexp `` ^$'' 表示 <BR> 一个空白的资料列(行首与行尾之间未存在任一字元). <BR> <BR> * [\] 将特殊字元还原成字面意义的字元. Regular Expression 中 特殊字元 将 <BR> 被解释成特定的意义. 若要表示特殊字元的字面(literal meaning) 意义时, 在 <BR> 特殊字元之前加上 ``\'' 即可. <BR> <BR> o [例如 :] 使用 Regular Expression 来表示字串``a.out''时, 不可写成 <BR> Regexp ``a.out''. 因为``.''在 Regular Expression 中是特殊字元, <BR> 表示任一字元. <BR> 可合乎(match) Regexp ``a.out'' 的字串将不只 ``a.out'' 一个; 字串 <BR> ``a2out'',``a3out'', ``aaout''... 都合於 Regexp ``a.out''. <BR> 正确的表示法应为 : Regexp ``a\.out'' <BR> <BR> `` \'' 在 Regular Expression 中的另一个意 义是当成 Escape character. <BR> <BR> o [例如 :] ``\t'' 用以表示 tab. ``\n'' 表示换行符号. <BR> <BR> * [...] 『字元集合』, 用以表示两中括号间 所有的字元当中的任一个. <BR> o [例如 : ] Regexp ``[123]'' 可用以表示字元 ``1''、``2'' 或 ``3''. <BR> Regexp ``[Tt]'' 可用以表示字元 ``T'' 或 ``t''. 所以, Regexp <BR> "[Tt]he" 表示字串 "The" 或 "the". (注意 : 一个字元集合仅代表``一个 <BR> ''字元.) <BR> 使用时, 需留心字元集合 [ ] 内不可随意留空白. <BR> <BR> o 例如 : Regexp ``[ Tt ]'' 中括号内有空白字元, 故除了可用 以表示字 <BR> 元``T''或``t''", 也可代表一个 `` ''(空白字元). <BR> <BR> * [-] 字元集合中可使用 `` -'' 来指定字元的区间, 其用法如下: <BR> <BR> Regexp ``[0-9]'' 等於 Regexp ``[0123456789]'' 用以表示任意 "一个" 阿 <BR> 拉伯数字. 同理 Regexp ``[A-Z]'' 用以表示任意 "一个" 大写英文字母. <BR> <BR> 但应留心 : <BR> <BR> o Regexp "[0-9a-z]" 并不等於 Regexp " [0-9][a-z]"; 前者表示一个字元 <BR> (阿拉伯数字或小写英文字母), 後者表示二个字元. <BR> o Regexp "[-9]" 或 "[9-]" 仅用以代表字元 ``9''或 ``-''. <BR> <BR> * [[^{...}]] 使用 [^{...}] 产生字元集合的补集(complement set). 其用法 <BR> 如下 : <BR> <BR> o Regexp ``[^M]'' 用以表示除字元``M''外的``一个''任意字元 <BR> o 字元集合 ``[Tt]''表示字元 ``T'' 或 ``t''. 若要指定 ``T'' 或 ``t'' <BR> 之外的任一个字元, 可用 Regexp ``[^Tt]'' 表示. <BR> o Regexp ``[^a-zA-Z]''表示英文字母之外的任一个字元. <BR> 需留心 ``^''之位置; ``^'' 必须紧接於 ``['' 之後, 才代表字元集合的补 <BR> 集. <BR> <BR> o [例如 :] Regexp ``[0-9^]'' 表示一个阿拉伯数字或字元 ``^'', 并非 <BR> 代表阿伯数字外的任意字元. <BR> <BR> * [*] 用以形容其前的字元或字元集合可重复任意次数的特殊字元. <BR> `` *'' 形容它前方之字元(或字元集合)可出现 1 次或多次, 或不出现. 例如 : <BR> <BR> o Regexp ``ab*'' 中, ``*'' 形容它前方的字元 ``b'' 可出现 1 次或多 <BR> 次, 或不出现. 所以, Regexp ``ab*'' 可表示字串 ``a''、``ab''、 <BR> ``abb''、 ``abbb''、... <BR> o Regexp ``T[0-9]*\.c'' 中, 使用 ``*'' 形容其前的字元集合 `` <BR> [0-9]''(一个阿拉伯数字)出现的次数 : 可为 0 次或多次. <BR> <BR> 故 Regexp ``T[0-9]*\.c''可用以表示 ``T.c''、``T0.c''、 ``T1.c''、 <BR> ``T2.c''、...、``T9.c''、``T00.c''、``T01.c''、``T02.c''、...、 <BR> ``T09.c''、``T10.c''、...``T99.c''、``T000.c''、... <BR> <BR> * [\<] `` \< Regexp'' 表示一个出现於"字首"且又合於(match)该 Regexp 的字 <BR> 串 (用法见下例). <BR> <BR> * [\>] ``Regexp \>'' 表示一个出现於"字末"且又合於(match)该 Regexp 的字 <BR> 串. <BR> 这里所谓的``字(word)''系指被 tab、逗点、句点或空白字元(space) 所分隔开 <BR> 的字串. <BR> o [例如 :] <BR> <BR> 资料 ``One is red, and the other is white.'' 中 字串 ``One'', <BR> ``is'', ``red'', ``and'', ``the'', ``other'', ``is'', ``white'' 便 <BR> 是所谓的 "字(word)". 而该资料列中, <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -