正则入门:两个匹配模式
2011-02-03 00:00
776 查看
现在请回顾一下上面贪婪、惰性匹配语法的表,有两个匹配模式比较有意思:
一个是“{n}”,对于这种形式的匹配,由于它精确地要求匹配 n 个字符,所以无所谓贪婪还是惰性,尽管“{n}?”也是正确的匹配写法,但它的匹配结果总是与“{n}”相同。
还有一个就是“??”,它看上去比较古怪且不好理解,因为通常我们使用贪婪匹配的时候都是匹配多个,也就是“*”或者“+”之类的匹配,而这里是 0 个或 1 个,它的贪婪与惰性匹配又是如何呢?我们还是看范例来说明:
正则如下:
我们来分析一下,在这个匹配中,匹配是这样的:首先需要匹配“nowamagic”字符串,然后,可以有 0 个或者 1 个“s”,按上面讲述的,贪婪匹配匹配尽可能多的,所以 nowamagic 被匹配了。
再来看看“??”这种匹配。
正则如下:
这次只匹配了“nowamagi”,我想现在已经不用过多解释,你对这个怪异的匹配语法已经明白了。惰性匹配发现“nowamagi”满足匹配 0 个的条件,于是将它保存到匹配结果集,然后重新进行匹配查找,直到字符串结束。
什么是正则表达式?
正则入门:匹配固定的单个字符
正则入门:匹配任意的单个字符
正则入门:字符组的使用
正则入门:在字符组中使用字符区间
正则入门:反义字符组的使用
正则入门:匹配空字符
正则入门:匹配一个或多个字符
正则入门:匹配零个或多个字符
正则入门:匹配零个或一个字符串
正则入门:匹配固定数目的字符
正则入门:匹配区间内数目的字符
正则入门:贪婪匹配
正则入门:惰性匹配
正则入门:两个匹配模式
正则入门:匹配单词边界
正则入门:边界的定义与相对性
正则入门:匹配非单词边界
正则入门:匹配文本首和尾
正则入门:子模式
正则入门:“或”匹配
正则入门:后向引用文本替换
正则入门:非获取匹配
正则总结:JavaScript中的正则表达式
正则总结:正则表达式在js中的高级应用
一个是“{n}”,对于这种形式的匹配,由于它精确地要求匹配 n 个字符,所以无所谓贪婪还是惰性,尽管“{n}?”也是正确的匹配写法,但它的匹配结果总是与“{n}”相同。
还有一个就是“??”,它看上去比较古怪且不好理解,因为通常我们使用贪婪匹配的时候都是匹配多个,也就是“*”或者“+”之类的匹配,而这里是 0 个或 1 个,它的贪婪与惰性匹配又是如何呢?我们还是看范例来说明:
正则如下:
nowamagic?
效果演示
welcome to nowamagic本例代码
function reg_replace() { var test = document.getElementById("test"); aim = "nowamagic?"; var regex = new RegExp("("+aim+")","g"); test.innerHTML = test.innerHTML.replace(regex,"<span style='background-color:orange'>$1</span>"); }
我们来分析一下,在这个匹配中,匹配是这样的:首先需要匹配“nowamagic”字符串,然后,可以有 0 个或者 1 个“s”,按上面讲述的,贪婪匹配匹配尽可能多的,所以 nowamagic 被匹配了。
再来看看“??”这种匹配。
正则如下:
nowamagic??
效果演示
welcome to nowamagic这次只匹配了“nowamagi”,我想现在已经不用过多解释,你对这个怪异的匹配语法已经明白了。惰性匹配发现“nowamagi”满足匹配 0 个的条件,于是将它保存到匹配结果集,然后重新进行匹配查找,直到字符串结束。
延伸阅读
此文章所在专题列表如下:什么是正则表达式?
正则入门:匹配固定的单个字符
正则入门:匹配任意的单个字符
正则入门:字符组的使用
正则入门:在字符组中使用字符区间
正则入门:反义字符组的使用
正则入门:匹配空字符
正则入门:匹配一个或多个字符
正则入门:匹配零个或多个字符
正则入门:匹配零个或一个字符串
正则入门:匹配固定数目的字符
正则入门:匹配区间内数目的字符
正则入门:贪婪匹配
正则入门:惰性匹配
正则入门:两个匹配模式
正则入门:匹配单词边界
正则入门:边界的定义与相对性
正则入门:匹配非单词边界
正则入门:匹配文本首和尾
正则入门:子模式
正则入门:“或”匹配
正则入门:后向引用文本替换
正则入门:非获取匹配
正则总结:JavaScript中的正则表达式
正则总结:正则表达式在js中的高级应用
相关文章推荐
- [原]正则表达式模式匹配入门
- Pyke 逻辑编程入门(7):模式匹配之“两个模式的匹配”
- SQL 正则表达式使模式匹配和数据提取变得更容易
- .NET 正则匹配之——.NET正则匹配模式
- Asp.net RegularExpressionValidator 控件验证输入值验证输入值是否匹配正则表达式指定的模式
- 浅谈php正则表达式中的非贪婪模式匹配的使用
- 随笔:linux中正则表达式BRE模式下的特殊匹配字符
- Scala学习第十九天 正则表达式、与模式匹配结合的的Reg代码实战
- JS中正则表达式所缺少的匹配模式(单行模式)
- Java中正则表达式、模式匹配与信息抽取
- [perl] 正则表达式实现多模式匹配
- 正则表达式、分组、子匹配(子模式)、非捕获子匹配(子模式)
- SQL中常用模糊查询的四种匹配模式&&正则表达式
- 正则入门:匹配一个或多个字符
- 正则入门:匹配区间内数目的字符
- grep 或 egrep 或awk 过滤两个或多个关键词|使用grep匹配“与”或者“或”模式
- hdu3065 病毒侵袭持续中 AC自动机入门题 N(N <= 1000)个长度不大于50的模式串(保证所有的模式串都不相同), 一个长度不大于2000000的待匹配串,求模式串在待匹配串中的出现次数。
- Python 正则表达式(模式匹配)
- JavaScript权威指南_80_第10章_正则表达式的模式匹配_10.0-概述
- scala 开发入门(8)-- 模式匹配