正则表达式 学习手册 二
发布时间:2020-12-14 01:15:52 所属栏目:百科 来源:网络整理
导读:2.5. 修饰匹配次数的特殊符号 前面章节中讲到的表达式,无论是只能匹配一种字符的表达式, 还是可以匹配多种字符其中任意一个的表达式,都只能匹配一次。 如果使用表达式再加上修饰匹配次数的特殊符号,那么不用重复书 写表达式就可以重复匹配。 使用方法是
2.5. 修饰匹配次数的特殊符号 前面章节中讲到的表达式,无论是只能匹配一种字符的表达式, 还是可以匹配多种字符其中任意一个的表达式,都只能匹配一次。 如果使用表达式再加上修饰匹配次数的特殊符号,那么不用重复书 写表达式就可以重复匹配。 使用方法是:"次数修饰"放在"被修饰的表达式"后边。比如: "[bcd][bcd]" 可以写成 "[bcd]{2}"。 表达式 作用 {n} 表达式重复 n 次,比如:"/w{2}" 相当于 "/w/w"; "a{5}" 相当于 "aaaaa" {m,n} 表达式至少重复 m 次,最多重复 n 次,比如: "ba{1,3}"可以匹配 "ba"或"baa"或"baaa" {m,} 表达式至少重复 m 次,比如:"/w/d{2,}"可以匹配 "a12","_456","M12344"... ? 匹配表达式 0 次或者 1 次,相当于 {0,1},比如: "a[cd]?"可以匹配 "a","ac","ad" + 表达式至少出现 1 次,相当于 {1,},比如:"a+b"可 以匹配 "ab","aab","aaab"... * 表达式不出现或出现任意次,相当于 {0,},比如: "/^*b"可以匹配 "b","^^^b"... 举例 1:表达式 "/d+/.?/d*" 在匹配 "It costs $12.5" 时,匹配的 结果是:成功;匹配到的内容是:"12.5";匹配到的位置是:开始于 10,结束于 14。 举例 2:表达式 "go{2,8}gle" 在匹配 "Ads by goooooogle" 时,匹配 的结果是:成功;匹配到的内容是:"goooooogle";匹配到的位置是: 开始于 7,结束于 17。 2.6. 其他一些代表抽象意义的特殊符号 一些符号在表达式中代表抽象的特殊意义: 表 达式 作用 ^ 与字符串开始的地方匹配,不匹配任何字符 $ 与字符串结束的地方匹配,不匹配任何字符 /b 匹配一个单词边界,也就是单词和空格之间的位置,不 匹配任何字符 进一步的文字说明仍然比较抽象,因此,举例帮助大家理解。 举例 1:表达式 "^aaa" 在匹配 "xxx aaa xxx" 时,匹配结果是:失败。 因为 "^" 要求与字符串开始的地方匹配,因此,只有当 "aaa" 位于字 符串的开头的时候,"^aaa" 才能匹配,比如:"aaa xxx xxx"。 举例 2:表达式 "aaa$" 在匹配 "xxx aaa xxx" 时,匹配结果是:失败。 因为 "$" 要求与字符串结束的地方匹配,因此,只有当 "aaa" 位于字 符串的结尾的时候,"aaa$" 才能匹配,比如:"xxx xxx aaa"。 举例 3:表达式 "./b." 在匹配 "@@@abc" 时,匹配结果是:成功; 匹配到的内容是:"@a";匹配到的位置是:开始于 2,结束于 4。 进一步说明:"/b" 与 "^" 和 "$" 类似,本身不匹配任何字符,但是 它要求它在匹配结果中所处位置的左右两边,其中一边是 "/w" 范围, 另一边是 非"/w" 的范围。 举例 4:表达式 "/bend/b" 在匹配 "weekend,endfor,end" 时,匹配 结果是:成功;匹配到的内容是:"end";匹配到的位置是:开始于 15,结束于 18。 一些符号可以影响表达式内部的子表达式之间的关系: 表达式 作用 | 左右两边表达式之间 "或" 关系,匹配左边或者右 边 ( ) (1). 在被修饰匹配次数的时候,括号中的表达式可 以作为整体被修饰 (2). 取匹配结果的时候,括号中的表达式匹配到的内 容可以被单独得到 举例 5:表达式 "Tom|Jack" 在匹配字符串 "I'm Tom,he is Jack" 时,匹配结果是:成功;匹配到的内容是:"Tom";匹配到的位置是: 开始于 4,结束于 7。匹配下一个时,匹配结果是:成功;匹配到的 内容是:"Jack";匹配到的位置时:开始于 15,结束于 19。 举例 6:表达式 "(go/s*)+" 在匹配 "Let's go go go!" 时,匹配结果是: 成功;匹配到内容是:"go go go";匹配到的位置是:开始于 6,结 束于 14。 举例 7:表达式 "¥(/d+/.?/d*)" 在匹配 "$10.9,¥20.5" 时,匹配的 结果是:成功;匹配到的内容是:"¥20.5";匹配到的位置是:开始 于 6,结束于 10。单独获取括号范围匹配到的内容是:"20.5"。 3. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |