美文网首页
正则之前后查找

正则之前后查找

作者: 高鸿祥 | 来源:发表于2019-02-28 21:31 被阅读6次

前后查找是指对某一位置的前后内容进行查找,匹配本身并不返回,而是用来确定正确的匹配位置。即一个必须匹配但不在结果中返回的模式(只匹配不消费)。

向前查找

语法

(?=pattern)

一个以?=开头的子表达式,需要匹配的文本跟在=的后面

例:匹配协议名

http://www.baidu.com
https://www.google.com
ftp://ftp.forta.com

正则表达式

.+(?=:)

结果

匹配到:http、https、ftp

解析

.+匹配任意字符一次或多次。(?=:)匹配,但:不出现在结果中(不消费)。因为?=向正则表达式引擎表明:只要找到的位置就好了,不要把它包括在最终的匹配结果里(不消费它)。结果值包含前面的字符

向后匹配

语法

(?<=pattern)

例:匹配价格

apple:¥2.99
banana:¥5.5
pitaya:¥100.21

正则表达式

(?<=¥)[0-9.]+

结果

匹配到2.99、5.5、100.21

解析

(?<=¥)匹配到但不出现在结果里(不消费),[0-9.]+匹配0-9或.的任意一次或多次

组合前后查找

向前查找和向后查找可以组合在一起使用

例:只匹配标题文本

<title>hello world</title>

正则表达式

(?<=\<[tT][iI][tI][lL][eE]>).*?(?=</[tT][iI][tI][lL][eE]>)

结果

匹配到hello world

解析

(?<=\<[tT][iI][tI][lL][eE]>)向后查找,匹配<title>但不消费它,为了减少歧义,title的做尖括号转译了。.*?匹配到hello world。(?=</[tT][iI][tI][lL][eE]>)向前查找,匹配到</title>,但不消费它。

对前后查找取非

对前后查找取非即负前后查找,它的意思是返回不与前后查找的给定模式相匹配的文本。

语法

负向前查找 (?!)
负向后查找 (?<!)

例:查找非价格数字

I paid $30 for 100 apples, 50 oranges. 
I saved $5 on this order.

正则表达式

\b(?<!\$)\d+\b

结果

匹配到:100、50

解析

\d匹配到数字,(?<!\$)匹配到不以开头的数字。`\b`限定单词边界,如果不限定,30中的0也会被匹配到。

相关文章

  • 正则之前后查找

    前后查找是指对某一位置的前后内容进行查找,匹配本身并不返回,而是用来确定正确的匹配位置。即一个必须匹配但不在结果中...

  • 模式匹配

    正向查找/,反向查找? 正则查找\v,原义查找\V 1. 大小写敏感设置 2.括号转义 3.正则表达式查找、原义查...

  • NotePad++或其他编辑器正则批量替换实例

    原始内容: 目标内容: 查找正则: 替换正则: 截图:

  • 正则表达式学习笔记(2)

    /*正则查找: 如果正则表达式需要查找内容需要使用以下两个对象:Pattern(正则对象)Matcher(匹配器对...

  • js正则表达式前后查找

    1、前后查找的4种模式 ?<= 正向向后查找?

  • find命令

    find [指定查找目录] [查找规则] [查找完后执行的action] 指定目录: 查找规则: 正则: 应...

  • 正则查找

    NSRange range = [str rangeOfString:@"\\d[\\d.,]*(?=元)" op...

  • js 正则表达式

    正则中经常用到的方法 test() :在字符串中查找符合正则的内容,若查找到返回true,反之返回false.v...

  • 正则表达式

    NSString自带的正则查找方法– rangeOfString:options:– rangeOfString:...

  • iOS 正则查找字符串中的数字

    需求:对字符串中的金额的颜色修改 传统方法:遍历查找 正则查找

网友评论

      本文标题:正则之前后查找

      本文链接:https://www.haomeiwen.com/subject/yhkluqtx.html