加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则

发布时间:2020-12-13 19:48:14 所属栏目:百科 来源:网络整理
导读:正则表达式中的特殊字符 字符 意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释。 例如:/b/匹配字符’b’,通过在b 前面加一个反斜杠,也就是/b/,则该字符变成特殊字符,表示 匹配一个单词的分界线。 或者: 对于几个字符,通常
正则表达式中的特殊字符   字符   意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释。   例如:/b/匹配字符’b’,通过在b 前面加一个反斜杠,也就是/b/,则该字符变成特殊字符,表示   匹配一个单词的分界线。   或者:   对于几个字符,通常说明是特殊的,指出紧接着的字符不是特殊的,而应该按字面解释。   例如:*是一个特殊字符,匹配任意个字符(包括0个字符);例如:/a*/意味匹配0个或多个a。为了匹配字面上的*,在a前面加一个反斜杠;例如:/a*/匹配’a*’。      字符^   意义:表示匹配的字符必须在最前边。   例如:/^A/不匹配"an A,"中的’A’,但匹配"An A."中最前面的’A’。      字符$   意义:与^类似,匹配最末的字符。   例如:/t$/不匹配"eater"中的’t’,但匹配"eat"中的’t’。      字符*   意义:匹配*前面的字符0次或n次。   例如:/bo*/匹配"A ghost booooed"中的’boooo’或"A bird warbled"中的’b’,但不匹配"Agoat g   runted"中的任何字符。      字符+   意义:匹配+号前面的字符1次或n次。等价于{1,}。   例如:/a+/匹配"candy"中的’a’和"caaaaaaandy."中的所有’a’。      字符?   意义:匹配?前面的字符0次或1次。   例如:/e?le?/匹配"angel"中的’el’和"angle."中的’le’。      字符.   意义:(小数点)匹配除换行符外的所有单个的字符。   例如:/.n/匹配"nay,an apple is on the tree"中的’an’和’on’,但不匹配’nay’。         字符(x)   意义:匹配’x’并记录匹配的值。   例如:/(foo)/匹配和记录"foo bar."中的’foo’。匹配子串能被结果数组中的素[1],...,[n] 返   回,或被RegExp对象的属性,返回。      字符x│y   意义:匹配’x’或者’y’。   例如:/green│red/匹配"green apple"中的’green’和"red apple."中的’red’。      字符{ n }   意义:这里的n是一个正整数。匹配前面的n个字符。   例如:/a{ 2 }/不匹配"candy,"中的’a’,但匹配"caandy," 中的所有’a’和"caaandy."中前面的两个’a’。      字符{ n,}   意义:这里的n是一个正整数。匹配至少n个前面的字符。   例如:/a{ 2,}不匹配"candy"中的’a’,但匹配"caandy"中的所有’a’和"caaaaaaandy."中的所有’a’      字符{ n,m }   意义:这里的n和m都是正整数。匹配至少n个最多m个前面的字符。   例如:/a{ 1,3 }/不匹配"cndy"中的任何字符,但匹配 "candy,"中的’a’,"caandy," 中的前面两个   ’a’和"caaaaaaandy"中前面的三个’a’,注意:即使"caaaaaaandy" 中有很多个’a’,但只匹配前面的三 个’a’即"aaa"。      字符[xyz]   意义:一字符列表,匹配列出中的任一字符。你可以通过连字符-指出一个字符范围。   例如:[abcd]跟[a-c]一样。它们匹配"brisket"中的’b’和"ache"中的’c’。      字符[^xyz]   意义:一字符补集,也就是说,它匹配除了列出的字符外的所有东西。 你可以使用连字符-指出一 字符范围。   例如:[^abc]和[^a-c]等价,它们最早匹配"brisket"中的’r’和"chop."中的’h’。      字符   意义:匹配一个空格(不要与b混淆)      字符b   意义:匹配一个单词的分界线,比如一个空格(不要与混淆)   例如:/bnw/匹配"noonday"中的’no’,/wyb/匹配"possibly yesterday."中的’ly’。      字符B   意义:匹配一个单词的非分界线   例如:/wBn/匹配"noonday"中的’on’,/yBw/匹配"possibly yesterday."中的’ye’。      字符cX   意义:这里的X是一个控制字符。匹配一个字符串的控制字符。   例如:/cM/匹配一个字符串中的control-M。      字符d   意义:匹配一个数字,等价于[0-9]。   例如:/d/或/[0-9]/匹配"B2 is the suite number."中的’2’。      字符D   意义:匹配任何的非数字,等价于[^0-9]。   例如:/D/或/[^0-9]/匹配"B2 is the suite number."中的’B’。      字符f   意义:匹配一个表单符      字符n   意义:匹配一个换行符      字符r   意义:匹配一个回车符      字符s   意义:匹配一个单个white空格符,包括空格,tab,form feed,换行符,等价于[ fnrtv]。   例如:/sw*/匹配"foo bar."中的’ bar’。      字符S   意义:匹配除white空格符以外的一个单个的字符,等价于[^ fnrtv]。   例如:/S/w*匹配"foo bar."中的’foo’。      字符t   意义:匹配一个制表符      字符v   意义:匹配一个顶头制表符      字符w   意义:匹配所有的数字和字母以及下划线,等价于[A-Za-z0-9_]。   例如:/w/匹配"apple,"中的’a’,".28,"中的’5’和"3D."中的’3’。      字符W   意义:匹配除数字、字母外及下划线外的其它字符,等价于[^A-Za-z0-9_]。   例如:/W/或者/[^$A-Za-z0-9_]/匹配"50%."中的’%’。      字符n   意义:这里的n是一个正整数。匹配一个正则表达式的最后一个子串的n的值(计数左圆括号)。      例如:/apple(,)sorange1/匹配"apple,orange,cherry,peach."中的’apple,orange’,下面有一个更加完整的例子。   注意:如果左圆括号中的数字比n指定的数字还小,则n取下一行的八进制escape作为描述。      字符ooctal和xhex   意义:这里的ooctal是一个八进制的escape值,而xhex是一个十六进制的escape值,允许在一个正则表达式中嵌入ASCII码 当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。 有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧: a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。 为什么第一个匹配是aab(第一到第三个字符)而不是ab(第二到第三个字符)?简单地说,因为正则表达式有另一条规则,比懒惰/贪婪规则的优先级更高:最先开始的匹配拥有最高的优先权——The match that begins earliest wins。 表5.懒惰限定符 代码/语法 说明 *? 重复任意次,但尽可能少重复 +? 重复1次或更多次,但尽可能少重复 ?? 重复0次或1次,但尽可能少重复 {n,m}? 重复n到m次,但尽可能少重复 {n,}? 重复n次以上,但尽可能少重复

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读