外文翻译——正则表达式(7)——量词+, * 和?

量词+, * 和?

一些被广泛使用的缩写量词"+","*"和"?"。

基本上,它们都是数量词的简写:

"+"

  表示“大于等于一个”,等同于"{1,}"。

  例如:"\d+"匹配一个任意长度的数字: 1 showMatch( "number 12345", /\d+/ ) // 12345

"?"

  表示“零个或一个”,等同于"{0,1}"。它让一个字符变成可选的。

  例如:"ou?nd"可以匹配"second"中的"ond",以及"secound"中的"ound"。

  1 showMatch( "second", /secou?nd/ )  // "second"
  2 showMatch( "secound", /secou?nd/ )  // "secound", both variants match

"*"

  表示“零个或多个”,等同于"{0,}"。一个字符可能会重复多次,亦或压根就不存在。

  下例匹配一个后面跟了零个或多个"0"的数字。

1 showMatch( "100 10 1", /\d0*/g ) // 100, 10, 1

和"+"(一个或多个)对比:

1 showMatch( "100 10 1", /\d0+/g ) // 100, 10

量词是正则式的基石,下面有更多示例。

浮点数(带“.”):"\d+\.\d+"

1 showMatch( "Any number of digits: 123.45", /\d+\.\d+/ )  // 123.45

没有属性的HTML开始标签:"/<[a-z]+>/i"

1 showMatch( "<BODY> ... </BODY>", /<[a-z]+>/gi )  // <BODY>

上面的正则式匹配符号"<",后面跟着一个或多个字母,并以">"符号结尾。这就是匹配一个开始标签的一种写法。

开始标签(更好):"/<[a-z][a-z0-9]>/i"

一个HTML标签可能在除了首位的任意位置出现数字。所以第一个字符是"[a-z]",后面跟着零个或多个"[a-z0-9]"。

1 showMatch( "
2   ...    ", /<[a-z][a-z0-9]*>/gi )  // <H1>

这儿我们遇到一个会经常出现的尴尬情况。正则式越精确就越复杂。比如在HTML标签示例中,"<\w+>"也是个不错的选择。

当然"<\w+>"会匹配到非法标签如:"<_>",但是却比"<[a-z][a-z0-9]>"简单的多,而且在实际数据匹配中,也运行的非常好。

开始或结束标签:"/<\/?[a-z][a-z0-9]>/i"

为了同时能匹配开始和结束标签,一个可选择的斜杠"/?"被加在标签名前面。斜杠需要为JS解释器转义。

1 var re = /<\/?[a-z][a-z0-9]*>/gi
2
3 showMatch( "<BODY> ... </BODY>", re )  // <BODY>, </BODY>

查找一个正或者负的小数。

1 var re = /* your regexp */
2
3 var str = "1.5 0 123 -7 -0.4"
4
5 alert(str.match(re))   // ‘1.5‘, ‘-0.4‘

一个整数"\d+"。再加一个小数在后面"\.\d+"变成"\d+\.\d+"。

现在让我们在前面再添加一个可选的负号"-?"变成"-?\d+\.\d+"。

最后,测试一下:

1 var re = /-?\d+\.\d+/g
2
3 var str = "1.5 0 123 -7 -0.4"
4
5 alert(str.match(re))   // ‘1.5‘, ‘-0.4‘

写一个正则式匹配数字。需要包含正整数和正小数:

1 var re = /* your regexp */
2
3 var str = "1.5 0 123"
4
5 alert(str.match(re))   // ‘1.5‘, ‘0‘, ‘123‘

整数部分"\d+"。

小数部分"\.\d+",再加一个"?"让它变得可选。

最后结果为:"\d+(\.\d+)?"。

1 var re = /\d+(\.\d+)?/g
2
3 var str = "1.5 0 123"
4
5 alert(str.match(re))   // ‘1.5‘, ‘0‘, ‘123‘
时间: 2024-09-29 16:19:00

外文翻译——正则表达式(7)——量词+, * 和?的相关文章

外文翻译——正则表达式(5)——字符集合与范围

本文章翻译自Ilya Kantor所写的JavaScript Tutorial.转载需遵守CC BY-NC-SA协议. 原文地址:http://javascript.info/tutorial/regexp-introduction 字符集合与范围 几个字符或者字符类可以用方括号"[...]"包起来,用来匹配其中之一. 例如,[eao]是指匹配"e","a"和"o"中的任意一个字母.也就是列表中的单一字符. 1 showMat

正则表达式:元字符,量词

1.正则 [012356789]  带匹配字符 8   匹配结果Ture  说明:在一个字符阻力枚举合法的所有字符,字符组里的任意一个字符和"待匹配字符"都是为可以匹配 意思: 只要匹配的字符串在正则里,就会保留 元字符: \w  匹配除换行符以外的任意字符 .  匹配除换行符以外的任意字符(有一个点) \d 匹配数字 \n 匹配一个换行符 \t 匹配一个制表符 \b匹配一个单词的结尾 ^匹配字符串的开始 $匹配字符串的结尾 \W 匹配非字母或数字或下划线 \D匹配非数字 \S匹配非空

外文翻译——JavaScript Tutorial——Regular Expression——(1)

原文地址:http://javascript.info/tutorial/regexp-introduction 简介 正则表达式有非常强大的用于字符串“查找”和“替换”的功能.在JS中,它被集成在字符串方法:search, match和replace中. 正则表达式,由一个pattern(匹配规则)和flags(修饰符—可选)组成. 一个基本的正则匹配跟子串匹配一样.斜杠"/"包围的字符串可以创建一个正则表达式. 1 regexp = /att/ 2 3 str = "Sh

外文翻译 《How we decide》赛场上的四分卫 第三节

本书导言翻译 本章第二节 1982年,一位名叫Elliot的病人走进了神经科学家Antonio Damasio的办公室.几个月之前,一个小的肿瘤在它的大脑中被切除,切除点与大脑额叶非常靠近.在手术之前,Elliot是一位模范丈夫与父亲·.在当地一家大公司中承担重要职责,并在教堂中作活动组织的责任人.但是这场手术改变了一切,尽管IQ值测试结果与术前无异,他现在却表现了一种精神缺陷:丧失了做决定的能力. 这种功能障碍导致他无法正常生活.往常只需要10分钟的正常任务现在需要数小时才能完成.他不断的在一

外文翻译 《How we decide》赛场上的四分卫 第二节

本书导言翻译 本章第一节 "决定是如何做出来的",关于意识最神秘的问题之一.尽管我们时刻做着决定,但是我们没有感觉到大脑内部的一系列有关进程.NFL球探挑选候选球员的评分表中,决策力被归为"无法预测"一类,尽管这个能力是如此的重要. 不透明的意识过程引发了一堆又一堆的理论.较为流行的理论将制定决策的过程描绘为一场理性与感性的战争,而理性往往是凯旋而归的一方.从这个理论上看来,将我们与其它动物分开来的,正为这天赋的理性.决策时,我们可以忽略掉我们的感觉,并对问题仔细的

外文翻译 《How we decide》赛场上的四分卫

本书导言翻译 为了能看懂这一章,先做了如下的功课: 百度百科 四分卫 国家橄榄球联盟中文站 在2002年超级碗赛场上,比赛的时间仅剩80秒,两队比分持平.新英格兰爱国者队于17码的位置执球,他们的对手是支持率极高的圣路易斯公羊队.没有人认为爱国者队可以获胜. 公羊队的支持率高出爱国者队14个点,他们强势的进攻被称为"赛场上伟大的演出".在18项统计得分上遥遥领先.四分卫Kurt Warner 获得了NFL 最有价值球员的称号,跑锋 Marshall Faulk获得了NFL年度进攻球员的

外文翻译 《How we decide》 Introduction

书籍PDF版地址:How we decide 本文为书籍导言部分的拙劣翻译. 当我驾驶着波音737驶向东京成田国际机场时,飞机的引擎突然起火了.此时我们正处于7000英尺的高空,机场的跑道就在不远的前方,东京的摩天大楼就在远方闪闪发亮.起火发生后仅仅数秒,驾驶舱内各种报警声响起了高音,提醒我各类系统的损坏,舱内满是红灯的闪烁.我通过将注意力集中于引擎着火检查列表(checklist),受之提示而切断了受影响区域的供油与电能.飞机开始倾斜角度.夜空就在我的侧面而非上方,我正尽全力控制飞机继续直线行

外文翻译 《How we decide》多巴胺的预言 第二节

本节阅读感言:一朝被蛇咬,十年怕井绳.我们的大脑时刻跟新着本体的预测机制. 上一节提到的喇叭,苹果汁实验可以不断的延伸扩展,在播放喇叭前用强光照射...强光照射前放置特定的图片...都可以扩展多巴胺相应的"预测能力".在事情都是按照预测发生时,多巴胺细胞受到正面响应而增加多巴胺的释放,而事情与预测相反时,他们就受到打击,减少多巴胺的释放. 大脑被设计成会对与预测不符的模式具有强烈的反应.无论是在看到与往常不同的雷达信号,还是没有获得苹果汁,大脑都能能迅速的注意到.然后产生一种强大的情感

外文翻译 《How we decide》被情感愚弄 第三节

本科论文答辩终于结束啦,一切都要继续回到正轨. 这是第三章章最后一节 书的导言 本章第二节 本章第一节 "信用卡是我的敌人."Herman Palmer这样说到.在平日,Herman是一个非常友善随和的人,但是只要谈到信用卡,他的脸色就变得非常非常差."每一天我看到大家都有同样的问题:钱包里的卡片:Visa和MasterCard." Herman在纽约布朗克斯区一家非盈利机构GreenPath担任经济顾问.他的办公室装潢极简,办公室内的桌子上摆着一个玻璃罐子,里面装