正则表达式环视概念与用法分析

本文实例讲述了正则表达式环视概念与用法。分享给大家供大家参考,具体如下:

1.环视又叫预搜索和零宽断言

2.环视又划分为

(?=exp)肯定顺序环视

(?<=exp)肯定逆序环视

(?!exp)否定顺序环视

(?<exp)否定逆序环视

3.环视只占用逻辑位置 不占用物理位置

如:匹配后缀名字为txt的文件

字符:file.txt、file2.exe 正则 \w(?=.exe) 匹配字符串file2

4.环视的用法

(?=exp)肯定顺序环视的2种用法

① 查找电话号码是132开头的电话

字符:我的工号是我的132开头的电话是13244444444我的158开头的电话是15822222222

正则(?=\d{11})132\d{8}  匹配13244444444

详解:先匹配到132 和158个号码  然后根据左边的表达式再对这个2号码进行匹配

② 查找后缀名字为txt的文件

字符file1.txt  file2.exe

正则 \w+(?=.exe) 匹配字符串file2

(?<=exp)肯定逆序环视的用法

① 取得指定文件的文件后缀

字符file1.text   file2.exe  fiel3.jpg

正则(?<=[/\w]+\.)\w+匹配字符text exe jpg

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript

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

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

(0)

相关推荐

  • 正则表达式中环视的简单应用示例【基于java】

    本文实例讲述了正则表达式中环视的简单应用.分享给大家供大家参考,具体如下: 由于开发工作需要对文本中内容进行过滤,删除或替换掉一些无用的或不符合要求的信息.于是发现一个问题,某一类工程性文本中,用到很多英文写法相同.但含义不同的单位,需要将其分别转为真实含义对应的汉字.比如:"粘度为17s,移动距离为350厘米,要求混凝土必须内实外光.振捣时间为30s.",很明显第一个s是粘度的单位,第二s是时间单位,现在需要将文本中所有表示时间的s替换为"秒",在朋友指引下,发现

  • javascript 正则表达式分组、断言详解

     javascript 正则表达式分组.断言详解 提示:阅读本文需要有一定的正则表达式基础. 正则表达式中的断言,作为高级应用出现,倒不是因为它有多难,而是概念比较抽象,不容易理解而已,今天就让小菜通俗的讲解一下. 如果不用断言,以往用过的那些表达式,仅仅能获取到有规律的字符串,而不能获取无规律的字符串. 举个例子,比如html源码中有<title>xxx</title>标签,用以前的知识,我们只能确定源码中的<title>和</title>是固定不变的.因

  • 正则匹配原理之 逆序环视深入 .

    说明:部分内容有待进一步研究和修正,因为最近工作太忙,暂时抽不出时间来,未研究过的可以跳过这一篇,想研究的不要被我的思路所左右了,有研究清楚的还请指正1 问题引出 前几天在CSDN论坛遇到这样一个问题: var str="8912341253789"; 需要将这个字符串中的重复的数字给去掉,也就是结果89123457. 首先需要说明的是,这种需求并不适合用正则来实现,至少,正则不是最好的实现方式. 这个问题本身不是本文讨论的重点,本文所要讨论的,主要是由这一问题的解决方案而引出的另一个

  • 正则表达式零宽断言详解

    正则表达式零宽断言: 零宽断言是正则表达式中的难点,所以本章节重点从匹配原理方面进行一下分析.零宽断言还有其他的名称,例如"环视"或者"预搜索"等等,不过这些都不是我们关注的重点. 一.基本概念: 零宽断言正如它的名字一样,是一种零宽度的匹配,它匹配到的内容不会保存到匹配结果中去,最终匹配结果只是一个位置而已. 作用是给指定位置添加一个限定条件,用来规定此位置之前或者之后的字符必须满足限定条件才能使正则中的字表达式匹配成功. 注意:这里所说的子表达式并非只有用小括号

  • 正则表达式之零宽断言实例详解【基于PHP】

    本文实例讲述了正则表达式之零宽断言.分享给大家供大家参考,具体如下: 前言 之前我曾写了一篇关于正则表达式的文章(http://www.jb51.net/article/111359.htm) 在该文章中详细介绍了正则,但是关于零宽断言介绍却是很少提及到.现在将该内容补充一下.在本文中,主要解决如下问题: ① 什么是零宽断言,为什么要使用零宽断言 ② 怎样使用零宽断言 概念 零宽断言,大多地方这样定义它,用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像 \b ^ $ \<

  • 正则基础之 环视 Lookaround

    1       环视基础 环视只进行子表达式的匹配,不占有字符,匹配到的内容不保存到最终的匹配结果,是零宽度的.环视匹配的最终结果就是一个位置. 环视的作用相当于对所在位置加了一个附加条件,只有满足这个条件,环视子表达式才能匹配成功. 环视按照方向划分有顺序和逆序两种,按照是否匹配有肯定和否定两种,组合起来就有四种环视.顺序环视相当于在当前位置右侧附加一个条件,而逆序环视相当于在当前位置左侧附加一个条件. 表达式 说明 (?<=Expression) 逆序肯定环视,表示所在位置左侧能够匹配Exp

  • 正则应用之 逆序环视探索 .

    1 问题引出 前几天在CSDN论坛遇到这样一个问题. 我要通过正则分别取出下面 <font color="#008000"> 与 </font> 之间的字符串 1.在 <font color="#008000"> 与 </font> 之间的字符串是没法固定的,是随机自动生成的 2.其中 <font color="#008000"> 与 </font>的数量也是没法固定的,也是

  • 正则表达式断言、巡视(Assertions)、正向断言、反向断言介绍

    断言(Assertions)在正则表达式概念里面难理解,它通常指的是在目标字符串的当前匹配位置进行的一种测试但这种测试并不占用目标字符串,也即不会移动模式在目标字符串中的当前匹配位置.详细可以看看,正则表达式匹配解析过程探讨分析(正则表达式匹配原理),里面提到"零宽度"很多元字符,只是对特殊位置进行匹配,它们可以理解为断言. 断言元字符 常见断言元字符有: \b, \B, \A, \Z, \z, ^ ,$ 它们只是表示特殊位置,各自作用如有字符串AB,带位置表示为:0A1B2 元字符

  • 正则表达式环视概念与用法分析

    本文实例讲述了正则表达式环视概念与用法.分享给大家供大家参考,具体如下: 1.环视又叫预搜索和零宽断言 2.环视又划分为 (?=exp)肯定顺序环视 (?<=exp)肯定逆序环视 (?!exp)否定顺序环视 (?<exp)否定逆序环视 3.环视只占用逻辑位置 不占用物理位置 如:匹配后缀名字为txt的文件 字符:file.txt.file2.exe 正则 \w(?=.exe) 匹配字符串file2 4.环视的用法 (?=exp)肯定顺序环视的2种用法 ① 查找电话号码是132开头的电话 字符:

  • Python正则表达式分组概念与用法详解

    本文实例讲述了Python正则表达式分组概念与用法.分享给大家供大家参考,具体如下: 正则表达式分组 分组就是用一对圆括号"()"括起来的正则表达式,匹配出的内容就表示一个分组.从正则表达式的左边开始看,看到的第一个左括号"("表示第一个分组,第二个表示第二个分组,依次类推,需要注意的是,有一个隐含的全局分组(就是0),就是整个正则表达式. 分完组以后,要想获得某个分组的内容,直接使用group(num)和groups()函数去直接提取就行. 例如:提取代码中的超链

  • PHP进阶学习之反射基本概念与用法分析

    本文实例讲述了PHP进阶学习之反射基本概念与用法.分享给大家供大家参考,具体如下: 一.前言 Reflection(反射)是Java程序开发语言的特征之一,它允许运行中的Java程序对自身进行检查,或者说"自审",并能直接操作程序的内部属性.这一特征在实际应用中也许用得不是很多. PHP从5.0开始完美支持反射API.PHP反射可以用于观察并修改程序在运行时的行为.一个面向反射的(reflection-oriented)程序组件可以监测一个范围内的代码执行情况,可以根据期望的目标与此相

  • ES6 Promise对象概念与用法分析

    本文实例讲述了ES6 Promise对象概念与用法.分享给大家供大家参考,具体如下: 1.Promise概念 Promise 对象有三种状态: ① Fulfilled 可以理解为成功的状态 ② Rejected 可以理解为失败的状态 ③ Pending 既不是 Fulfilld 也不是 Rejected 的状态,可以理解为 Promise 对象实例创建时候的初始状态 2.三个重要方法 在 Promise 对象当中有三个重要方法----resolve, reject和then. resolve 方

  • javascript数据结构之串的概念与用法分析

    本文实例讲述了javascript数据结构之串的概念与用法.分享给大家供大家参考,具体如下: 串是由零个或多个字符组成的有限序列.串中字符的个数称为串的长度. 串中任意个连续的字符组成的子序列称为该串的子串.包含子串的串相应地称为主串.通常称字符在序列中的序号为该字符在串中的位置.子串的首字符在主串中首次出现的位置定义为子串在主串中的位置. 串的逻辑结构和线性表十分相似,区别仅仅在于串的数据对象约束为字符集.然而两者的基本操作有很大差别.线性表中,基本以单个元素来进行操作:而串中多半以串的整体也

  • JS匿名函数和匿名自执行函数概念与用法分析

    本文实例讲述了JS匿名函数和匿名自执行函数概念与用法.分享给大家供大家参考,具体如下: 1. 匿名函数的常见场景 js中的匿名函数是一种很常见的函数类型,比较常见的场景: <input type="button" value="点击" id="btn"> <script type="text/javascript"> //匿名函数的第一种情形 var btn=document.querySelector

  • Python模块、包(Package)概念与用法分析

    本文实例讲述了Python模块.包(Package)概念与用法.分享给大家供大家参考,具体如下: Python中"模块"的概念 在开发中,我们会有很多函数,我们可以把这些函数都放到一个文件. 比如function.py中: #定义函数 def show(): print("jack") #定义变量 name = "tom" 在其他地方要使用其中的函数怎么办呢? 第一步:需要先引入 import funtions 第二步:通过文件名.函数名/变量名

  • PHP中抽象类和抽象方法概念与用法分析

    本文实例讲述了PHP中抽象类和抽象方法.分享给大家供大家参考,具体如下: 一.抽象关键字 :abstract 抽象就是无法确切的说明,但又有一定的概念或者名称,在PHP中声明一个抽象类或者方法我们需要使用adstract关键字. 二.抽象方法和抽象类的定义 一个类中至少有一个方法是抽象的,我们称之为抽象类.所以如果定义抽象类首先定义抽象方法. abstract class class1{ abstract function fun1(); -- } 1.类中至少有一个抽象方法 2.抽象方法不允许

  • javascript正则表达式之分组概念与用法实例

    本文实例讲述了javascript正则表达式之分组概念与用法.分享给大家供大家参考,具体如下: function matchDemo(){ var s; //该表达式分了三个组:d(b+)(d).(b+).(d)这个三个组(实际上是四个组,包括本身所有的表达式) //从最左边数第一个括号为第一个组,第二个括号为第二组,以此类推,分别对应的值为RegExp.$1和RegExp.$2的值 var re = new RegExp("(d(b+)(d))","ig"); v

  • Java抽象类概念与用法实例分析

    本文实例讲述了Java抽象类概念与用法.分享给大家供大家参考,具体如下: 抽象:就是对一个事物的大概描述 抽象方法:以abstract修饰的方法,这种方法只声明返回数据类型,方法名和所需参数,并没有函数体.如 abstract void study(); 抽象类特点: 1.抽象类中不一定含有抽象方法:但抽象方法一定在抽象类中. 2.抽象类不具备实际功能,只能用于派生子类 3.抽象类中可以包含构造函数,但是构造函数不能被声明成抽象.抽象类中的成员方法包括一般方法和抽象方法 4.抽象方法和抽象类都必

随机推荐