正则表达式 学习手册 二

zz/2024/7/13 12:22:36

2.5.  修饰匹配次数的特殊符号

前面章节中讲到的表达式,无论是只能匹配一种字符的表达式,还是可以匹配多种字符其中任意一个的表达式,都只能匹配一次。如果使用表达式再加上修饰匹配次数的特殊符号,那么不用重复书写表达式就可以重复匹配。

使用方法是:"次数修饰" 放在 "被修饰的表达式" 后边。


表达式  {n}  重复 n 次

比如:"/w{2}" 相当于 "/w/w";

比如:"a{5}" 相当于 "aaaaa";

比如:表达式 "[bcd][bcd]"   可以写成 "[bcd]{2}"。


表达式 {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"。


第三片知识点博文:  http://blog.csdn.net/u011630575/article/details/53314040




http://www.ngui.cc/zz/2762666.html

相关文章

在Eclipse中使用TODO来记录待办任务

在开发过程中,可能会有一些任务需要做,但不能马上做,所以需要记录下来,以防忘记。为了解决这个问题,很多IDE都提供了“To do list“的功能。 比如,在Eclipse的java /javaWeb工程中的任意文件任意处&#x…

页面加载时就运行javascript函数

页面加载时就运行javascript函数 function Resolution() { Xscreen.width;Yscreen.height;Resolution X/Y; } 我要在页面加载时就运行上面这个javascript函数&#xff0c;有什么办法么? 在<body>内这样写:<body οnlοad"Resolution();">.

百度地图--根据经纬度定位

根据经纬度定位 <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> <meta name"viewport" content"initial-scale1.0, user-scalableno" /> <style type"text/cs…

在jquery的ajax中添加自定义的header信息

因为种种原因&#xff0c;自己的框架中要传系统约定好的header信息&#xff0c;页面使用的jquery的ajax请求&#xff0c;找了好久&#xff0c;突然发现我们可以在beforeSend方法中设置&#xff0c;这个方法接受一个参数&#xff0c;就代表了发起异步请求的XMLHttpRequest对象&a…

IntelliJ IDEA的使用(二)

在使用InelliJ IDEA的过程中&#xff0c;通过查找资料以及一些自己的摸索&#xff0c;发现这个众多Java程序员喜欢的IDE里有许多值得一提的小窍门&#xff0c;如果能熟练的将它们应用于实际开发过程中&#xff0c;相信它会大大节省你的开发时间&#xff0c;而且随之而来的还会有…

jvm基础知识五----分代垃圾回收详细

为什么要分代 分代的垃圾回收策略&#xff0c;是基于这样一个事实&#xff1a;不同的对象的生命周期是不一样的。因此&#xff0c;不同生命周期 的对象可以采取不同的收集方式&#xff0c;以便提高回收效率。 在Java程序运行的过程中&#xff0c;会产生大量的对象&#xff0c;…

如何在ubuntu下设置永久的alias别名

永久的alias别名步骤如下&#xff1a; 第一步&#xff1a; cd /home/用户名 切换超级用户 sudo -s 第二步&#xff1a; 编辑 vim ./.bashrc 第三步&#xff1a; 在下图横线处输入别名 第四歩&#xff1a;保存退出 第五步&#xff1a;执行命令 source ./.bas…

nginx负载均衡配置---nginx的学习之路

Nginx 负载均衡 1. Nginx 负载均衡基础知识 nginx 的 upstream 目前支持 4 种方式的分配 1)、轮询&#xff08;默认&#xff09; 每个请求按时间顺序逐一分配到不同的后端服务器&#xff0c;如果后端服务器 down 掉&#xff0c;能自动剔除。 2)、weight 指定轮询几率&#xf…

配置Nginx来支持PHP----重点介绍Nginx如何通过PHP_FPM的FastCGI进程对PHP进行解析处理。

Nginx的安装特别简单&#xff0c;前面已经对此进行了详细介绍&#xff0c;这里不再进行讲述。下面重点介绍Nginx如何通过PHP_FPM的FastCGI进程对PHP进行解析处理。 由于Nginx本身不会对PHP进行解析&#xff0c;因此要实现Nginx对PHP的支持&#xff0c;将对PHP页面的请求交给Fas…