• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >正则表达式 > 正则表达式分组实例详解

正则表达式分组实例详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了正则表达式详解,java正则表达式详解,js正则表达式详解,python正则表达式详解,java正则表达式实例等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

正则表达式分组:
如果想匹配3个数字,正则表达式可以用如下写法:

\d{3}

以上代码使用重复量词可以匹配3位数字。
但是在实际应用中,往往需要重复多个字符,例如我想重复ab两个字符,使用以下代码就不合适了,代码如下:

ab{3}

以上正则表达式只能够重复3次b。
为了实现重复多个字符可以使用小括号来指定子表达式或者说分组来实现此功能,例如:

(ab){3}

上面的正则就可以重复ab了。
所谓的分组就是使用小括号将一些项包括起来,使其成为独立的逻辑域,那么就可以像处理一个独立单元一样去处理小括号的内容。

下面看一段代码实例:

(\d{1,3}\.){3}\d{1,3}

上面是一个简单的ip匹配正则表达式。由小括号包裹的内容会被作为一个独立的逻辑域进行操作。
分组的作用:
在正则表达式中,分组具有举足轻重的作用,下面就简单对它的功能做一下简单的介绍。

一.起到原始的分组作用:

把单独的项目进行分组,以便合成子表达式,这样就可以像处理一个单独的字符那样,对其应用|、+、*或者?等元字符来操作它们。
实例代码如下:

var str="I love javascript and java";
console.log(str.match(/java(script)?/gi));
</div>

由以上代码的运行结果可以看出,正则表达式既可以匹配字符串javascript也可以匹配java,这是因在正则表达式中采用了分组,并且使用重复量词?,可以使前面的子表达式重复0次或者1次。

二.定义子模式:

分组另一个非常重要的作用就是在完整的模式中定义子模式。
当一个正则表达式成功的和目标字符串相匹配时,可以从目标字符串中抽出和小括号中字表达式相匹配的部分。
假如我们匹配的是以一个数字开头的后面跟着一个或者多个不区分大小写的字母的字符串,正则表达式可以这样写:

/\d[a-zA-Z]+/

假如我们真正关心和需要的是开头的数字,那么就可以将正则表达式的数字部分放入小括号就可以从检索到的匹配中抽取数字.

/(\d)[a-zA-Z]+/

三.引用子表达式:
正则表达语法中可以在同一个表达式中的后部引用前面的子表达式。这是通过在"\"后面跟随数字实现的。此数字指定了小括号字表达式在正则表达式中的位置,例如\1是引用的第一个带有圆括号的子表达式,自然\2就是第二个带有圆括号的子表达式。
特别注意:由于子表达式是可以相互嵌套的,那么计算子表达式的位置的时候,只要确定左括号的位置即可。例如:

/(java(script))/

在以上正则表达式中,嵌套的子表示是可以用\2表示。
对于子表达式的引用,并不是引用的匹配模式,而是对子表示匹配内容的引用。一般来说对子表达式的引用一般是用来实施一条约束,看下面的代码:

/(['"])[^'"]*\1/

通常情况下左右引号是相匹配的,如果前面是双引号,那么结尾也要是双引号,前面是单引号那么结尾也必须是单引号,并且字符串中间不能够再出现其他的引号,例如:

"欢迎您"
'欢迎您'

那么上面的正则表达式就实现此功能,当前面的子表达式匹配单引号的时候,那么后面的\1也就表示的是单引号,如果子表示匹配的双引号,那么后面的\2就表示的是双引号。
非引用型分组:
分组会占用一定的系统资源,尤其是正则表达式较长的时候会降低匹配速度。有时候仅仅是为了设置一个分组,并不需要引用,那么使用非引用类型分组将会是一个良好的选择。

/(java(?:script))/

以上正则就是使用非引用分组,只要在左括号后面加上一个?:即可。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 正则表达式教程之前后查找lookaround详解
  • 正则表达式教程之位置匹配详解
  • 正则表达式教程之重复匹配详解
  • 正则表达式教程之匹配一组字符详解
  • 正则表达式教程之匹配单个字符详解
  • 正则表达式教程之操作符及说明详解
  • 详解基于Linux下正则表达式(基本正则和扩展正则命令使用实例)
  • 正则表达式分组实例详解
  • 详解正则表达式之数字验证
  • 详解js正则表达式语法介绍

相关文章

  • 2017-05-11PHP正则表达式完全教程之基础篇
  • 2017-05-11正则表达式匹配 非XXX的行
  • 2017-05-11js正则表达式之input属性($_)RegExp对象属性介绍
  • 2017-05-11比较全面的C 、Java、JavaScript中的正则表达式详解
  • 2017-05-11JavaScript中常用的正则表达式日常整理(全)
  • 2017-05-11jQuery正则表达式的使用方法步骤详解
  • 2017-05-11JS正则表达式详解[收藏]
  • 2017-05-11正则表达式号码靓号类型判断代码
  • 2017-05-11php 正则 不包含某字符串的正则表达式
  • 2017-05-11正则表达式实现将MM/DD/YYYY格式的日期转换为YYYY-MM-DD格式

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • js:校验IPv6地址的正则表达式
    • 正则基础之 NFA引擎匹配原理
    • 请教一个正则表达式,匹配所有Html标签外部的指定字符串
    • 正则表达式全局匹配模式(g修饰符)
    • JavaScript正则表达式验证中文实例讲解
    • String字符串匹配javascript 正则表达式
    • 可以少写1000行代码的正则表达式
    • 如何用正则取input type="text"中的value
    • 精确查找PHP WEBSHELL木马 修正版
    • Python 中文正则表达式笔记

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有