正则表达式:匹配符号 译注:back-reference 网络解释为逆向引用、后向引用, 用于重复搜索前面某个分组匹配的文本. Non-capturing group 网络解释为非捕获组, 就是输入字符串和捕获组匹配的那一部分将不被保存在内存中 [ ... ]匹配任何字符. 例如: [aeiou] 匹配任何小写元音字母. 连续设置可以在开始和结束之间使用破折号. 例如: [a-z] 匹配任何小写字符. 设置包含破折号 (-),使用它作为第一个或最后一个字符. 设置包含方括号,使用它作为第一个字符的设置. 例如: [][] 将匹配任意 [ 或 ]. 注意:特殊字符在设置内不保留他们的特有含义,有例外: ,^,-,[ 与 ] ,它们在一个设置内匹配转义符. [^ ... ]匹配任何不在指定範圍內的任意字符. 例如: [^0-9] 不匹配任何数字. 要匹配 "^" 字符本身,请使用 (^). [:class:]在字符的给定类中匹配字符. 有效类是: alpha (任何字母字符),alnum (任何字母数字字符),lower (任何小写字母), upper (任何大写字母),digit (任何十进制数字 0-9),xdigit (任何十六进制数字,0-9,A-F,a-f), space (任何空白字符),blank (只有一个空格或制表符),print (任何可打印字符), graph (除空格外的任何可打印字符),cntrl (任何控制字符 [ascii 127 或 <32]) punct (任何标点字符). 因此 [0-9] 相当于 [[:digit:]]. [^:class:]在类中除第一个字符外,不匹配任何字符 ( ... )组. 组中的元素可按序重复处理. 例如: (ab)+ 将匹配 "ab" 或 "abab",但不匹配 "aba". 组能保存匹配的文本,以便由函数返回的数组后向引用,但需取决于设定的标志值. (?i)不区分大小写. 该标志对组无效. 它指定正则表达式匹配时不涉及大小写. (?-i)(默认) 区分大小写. 该标志对分组无效. 它指定正则表达式匹配时区分大小写. (?i ... )区分大小写的组. 仅工作于正常组,在分组内执行匹配时区分大小写. (?-i ... )区分大小写的组. 仅工作于正常组,在分组内执行匹配时区分大小写. 主要用于 (-i) 标志之后, 或一个区分大小写的分组内. (?: ... )非捕获组. 仅工作于正常组,但是不记录数组的匹配字符,被匹配的文本也不会用作后向引用. (?i: ... )不区分大小写的非捕获组. 仅工作于捕获组,在非捕获组内执行不区分大小写的匹配. (?-i: ... )区分大小写的非捕获组. 仅工作于非捕获组,在非捕获组内执行区分大小写的匹配. (?m)^ 与 $ 匹配数据内的换行符. (?s). 匹配任意字符,包括换行. (默认 "." 不匹配换行) (?x)忽略空白区域和 # 注释. (?U)反转贪婪的量词. .匹配任何的单字符 (除换行以外).. |或句点" . ",可以匹配|前的字符也可以匹配|之后的字符. 退出一个特殊字符 (让它匹配实际字符) 或者引用一个特殊字符类型 (见下文).. 匹配一个真实的反斜线 (). a报警字符(打印它的效果是电脑嘀一声),即字符 BEL (chr(7)). A只匹配字符串的开头. b匹配一个单词边界,也就是单词和空格之间的位置. 例如:"erb" 可以匹配 "never" 中的 "er",但不能匹配 "verb" 中的 "er" B匹配非单词边界. 例如: “erB” 能匹配 “verb” 中的 “er”,但不能匹配 “never” 中的 “er”. c匹配一个控制字符,基于下一个字符. 例如:,cM 匹配 ctrl-M. d匹配数字字符, 等价于[0-9]. D匹配非数字字符, 等价于[^0-9]. e匹配一个退出符 (chr(27)). E结束大小写修改. f匹配一个换页符 (chr(12)). h匹配一个换行符. H任何不是水平的空白字符. n匹配换行符 (@LF,chr(10)). Q引用 (停用) metacharacters 模式到 E 时为止. 译注: metacharacters = 元字符,指那些可以代表特殊含义的字符 r匹配一个回车符 (@CR,chr(13)). s匹配任何的空白字符: Chr(9) 到 Chr(13).包括:水平制表符,换行,垂直列表符,换页,回车以及标准空格 ( Chr(32) ). S匹配任何的非空白的字符. t匹配一个制表符 (chr(9)). v匹配一个垂直制表符. V匹配不是垂直制表符的任何字符. w匹配包括下划线的任何单词字符,等价于“[A-Za-z0-9_]”. W匹配任何非单词字符, 等价于“[^A-Za-z0-9_]”。. ###匹配ASCII字符, 其代码是特定的或是后向引用的. 最多只能有 3 个八进制数字. 找到的匹配用于后向引用. 匹配先前的组. 例如: ([:alpha:])1 将匹配一个双字母. x##匹配指定的ascii字符,用字符的的十六进制表示. 只能是 2 个数字. 比如:空格可以使用 "x20" 表示. z只匹配字符串结束. Z只匹配字符串结束,或者换行之前.
重复字符 {x}重复前面的字符,精确 x 次数. {x,}重复前面的字符,至少 x 次数. {0,x}重复前面的字符,最多 x 次数. {x,y}重复前面的字符,在 x 与 y 之间的次数,x、y包括在内. *重复前面的字符,0 或更多次数. 等价于 {0,} +重复前面的字符,1 或更多次数. 等价于 {1,} ?可能会或可能不会出现的前一字符. 等价于 {0,1} ? (在一个重复字符之后)查找最少的匹配而非最多的
字符类别 [:alnum:]字母和数字 [:alpha:]字母 [:ascii:]字符代码 0 - 127 [:blank:]空格或制表符 [:cntrl:]控制字符 [:digit:]十进制数字 (相同于 d) [:graph:]可打印字符,排除空格 [:lower:]小写字母 [:print:]可打印字符,包括空格 [:punct:]可打印字符,排除文字和数字 [:space:]空白空间 (不完全和 s 相同,还包括 VT: chr(11) ) [:upper:]大写字母 [:word:]"字" 字符 (相同于 w) [:xdigit:]十六进制数 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|