正则表达式教程之子表达式用法分析

 更新时间:2017年01月09日 12:02:09   作者:MikanMu  
这篇文章主要介绍了正则表达式教程之子表达式用法,分析了正则表达式中子表达式的概念、功能与使用方法,需要的朋友可以参考下

本文实例讲述了正则表达式教程之子表达式用法。分享给大家供大家参考,具体如下:

注:在所有例子中正则表达式匹配结果包含在源文本中的【和】之间,有的例子会使用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正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript

正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg

希望本文所述对大家正则表达式学习有所帮助。

相关文章

  • 正则表达式必知必会之重复匹配详细示例

    正则表达式必知必会之重复匹配详细示例

    这篇文章主要给大家介绍了关于正则表达式必知必会之重复匹配的相关资料,重复匹配正则表达式中匹配多个字符的办法就是通过使用集中特殊的元字符来做到,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • JS 正则表达式(学习笔记2)匹配网址url参数

    JS 正则表达式(学习笔记2)匹配网址url参数

    呵呵,刚学习正则表达式,今天帮一个美女解决了个问题。感到很高兴。先贴下今天都学了什么吧。不然忘记了。
    2010-05-05
  • PHP中的递归正则表达式用法分享

    PHP中的递归正则表达式用法分享

    其实很多语言中的正则表达式都是支持递归的, 本文主要介绍PHP的正则递归. 虽然, 工作中最常用的正则表达式都很普通, 只用最基本的语法就能解决85%以上的问题, 而且合理有效地使用普通正则来解决复杂问题也是一门技巧与学问,但是更高级一点的语法的确有它存在的价值,看下面具体介绍
    2012-09-09
  • 正则表达式教程之重复匹配详解

    正则表达式教程之重复匹配详解

    这篇文章主要介绍了正则表达式教程之重复匹配,结合实例形式分析了正则表达式重复匹配及防止过度匹配相关技巧,需要的朋友可以参考下
    2017-01-01
  • 教你轻松记住JS正则表达式

    教你轻松记住JS正则表达式

    有没有人像小编一样,学了好几遍正则表达式却还是很懵圈,学的时候老明白了,学完了忘光了。好吧,其实还是练的不够,今天就随我来复习一下这傲娇的正则表达式吧。
    2016-07-07
  • 如何使用正则表达式对输入数字进行匹配详解

    如何使用正则表达式对输入数字进行匹配详解

    正则表达式用于字符串处理、表单验证等场合,实用高效,下面这篇文章主要给大家介绍了关于如何使用正则表达式对输入数字进行匹配的相关资料,文中介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • 正则表达式常用元字符整理小结

    正则表达式常用元字符整理小结

    以下关于正则表达式的内容来自 MSDN 和维基百科,仅供自己查阅方便
    2012-06-06
  • linux 正则表达式grep实例分析

    linux 正则表达式grep实例分析

    正则表达式(Regular Expression)是用于描述一组字符串特征的模式,用来匹配特定的字符串。通过特殊字符+普通字符来进行模式描述,从而达到文本匹配目的工具
    2020-04-04
  • 最常用的PHP正则表达式收集整理

    最常用的PHP正则表达式收集整理

    正则表达式用于字符串处理、表单验证等场合,实用高效。本文收集了一些常用的表达式:
    2008-04-04
  • linux grep不区分大小写查找字符串方法

    linux grep不区分大小写查找字符串方法

    这篇文章主要介绍了linux grep不区分大小写查找字符串方法,需要的朋友可以参考下
    2020-03-03

最新评论