正则表达式教程之子表达式用法分析
本文实例讲述了正则表达式教程之子表达式用法。分享给大家供大家参考,具体如下
注在所有例子中正则表达式匹配结果包含在源文本中的【和】之间,有的例子会使用java来实现,如果是java本身正则表达式的用法,会在相应的地方说明。所有java例子都在JDK1.6.0_13下测试通过。
一、问题引入
来看一个例子,有的短语如Windows 2000虽然是多个单词组成,但其实是一个整体,HTML页面中可以使用非换行空格( 即non-breaking space)让它在浏览器中显示在一行上,现在来匹配多个这样的空格
文本Your operation systemis Windows 2000.
正则表达式nbsp;{2,}
结果Your operation systemis Windows 2000.
分析这里使用模式想匹配2个或2个以上的非换行空格,从结果可以看出,没有匹配到任何东西,因为nbsp;{2,}这个模式只能匹配到像nbsp;;;;;;;这样以nbsp开头,2个或2个以上连续分号的文本。
因为前面说过的重复匹配都是紧挨着重复匹配元字符之前的那个字符的多次重复,,如果我们想对一个字符串进行多次匹配,又该怎么做呢?
二、子表达式
从上面我们引出子表达式。子表达式是一个大的表达式的一部分,把一个表达式划分为多个子表达式的目的是为了把那些子表达式当作一个独立的元素来使用。子表达式必须用(和)括起来。所以,前面的例子中正则表达式应该写成(nbsp;){2,}。
来看一个匹配有效年份的正则
文本1988-11-13
正则表达式(19|20)\d{2}
结果【1988】-11-13
分析这个例子中,为了排除没有意义的年份,把年份的前两位数字限定为19或20,|是正则表达式里的或操作符。这里必须把19|20放到一个子表达式里,即(19|20),否则只能匹配到以20开头的年份,
三、子表达式的嵌套
子表达式允许嵌套,而且允许多层嵌套,嵌套层次在理论上没有限制。
在表达式 ((A)(B(C))) 中,存在以下几个子表达式
1 ((A)(B(C)))
2 (A)
3 (B(C))
4 (C)
共4个,第0个始终代表整个表达式。在后面的回溯引用中会介绍到通过\n(n是子表式的编号)来引用子表达式。
子表达式嵌套的例子可参看后面匹配IPV4地址的正则表达式。
PS这里再为大家提供2款非常方便的正则表达式工具供大家参考使用
JavaScript正则表达式在线测试工具
正则表达式在线生成工具
希望本文所述对大家正则表达式学习有所帮助。
编程语言
- 宿迁百度关键词排名指南:实现精准营销的关键
- 四川SEO优化怎么做网络推广
- 立昂技术备案老域名收购:如何为您的业务赋能
- 安徽百度关键词seo贵不贵,一般需要多少钱
- 吉林百度快照排名怎么做电话营销
- 多伦新手做SEO怎么做
- 甘肃优化关键词排名推广怎么做论坛营销
- 沙雅SEO网站推广:提升您的在线可见性
- 四川SEO优化如何提升销售额和销售量
- 聂荣网站排名优化:提升网站可见性的全方位指
- 涞水SEO:提升地方企业在线可见性的策略
- 辽宁百度seo排名怎样做网站排名
- 临湘哪有关键词排名优化:提升网站可见度的关
- 黑龙江百度网站优化有没有优惠
- 凉城优化关键词排名推广:提升您的网络可见性
- 萝北整站优化:提升您网站流量和排名的全面指