正则表达式_语法学习_9(前后查找)
一、向前查找
概述:向前查找就是指定了一个必须匹配但不在结果中返回的模式
语法形式:其实就是一个以?= 开头的子表达式,需要被匹配的文本跟在"?"之后
提示:
123提示 有些正则表达式文档使用术语“消费”(consume)来表述“匹配和返回文本”的含义。在向前查找里,被匹配的文本不包含在最终返回的匹配结果里,这被称为“不消费”。
例子:
分析:
1234".+"匹配至少一个字符,这对应着URL的协议名,显然我们也只需要协议名,并不需要再往后的内容,也是说说我们只要消费协议名,因此我们就可以使用向前查找,"?=:"匹配到":",但是并不消费":",也就是不会返回匹配到的结果,
注意:
12345向前查找(和先后查找)匹配其实本身是有返回结果的,只不过,这个结果的返回长度永远是0而已,因此,前后查找模式有时也被叫做,零宽度(zero-width)匹配操作
二、向后查找
语法: (?<=)
例子
向前查找和向后查找的结合
直接上例子
12345问题解决了。(?<=<[ ...
正则表达式_语法学习_7(使用子表达式-回溯引用)
一、 回溯引用匹配
功能:\n 即代表着第n个子表达式所匹配的内容
例一:
目的:**匹配出HTML中成对出现的标题标签(到,以及配对的 如下图
分析
12345第一个字句:"([1-9])"匹配的是这一组标题标签的数字部分,而最后的"\1"正代表着相同的数字内容,所以只有第一个(即第二行被成功匹配)其余两对标签则因为开始和结束标签中的数字不相等而不被匹配由此可以看出,回溯引用指的是模式的后半部分去引用在前半部分中定义的子表达式
注意:
12回溯引用匹配通常从1开始计数(\1、\2,等等)。在许多实现里,第0个匹配(\0)可以用来代表整个正则表达式。
二:回溯引用在替换操作上的应用
目的:将文本中的邮件地址更改为可点击链接
使用:$n
分析
12第一个子表达式匹配出了一个电子邮箱地址,$1便代表着那第一个子表达式匹配出的内容
正则表达式_语法学习_6(位置匹配)
一、单词边界
目的:** 匹配单个单词**
使用元字符:\b
作用:
12345\b到底匹配什么东西呢?正则表达式引擎不懂英语(事实上,它不懂任何人类语言),也不知道什么是单词边界。简单地说,\b匹配的是一个这样的位置,这个位置位于一个能够用来构成单词的字符(字母、数字和下划线,也就是与\w相匹配的字符)和一个不能用来构成单词的字符(也就是与\W相匹配的字符)之间。
例一
没有使用:\b
使用之后
二、字符串边界
目的:对所要匹配的字符串(在一行的)的开头和(一行的)结尾做出限制
使用元字符:^ 和$
直接上例子
仔细分析:
1234567891011121314首先,"<"匹配第一个字符,随便后的转移之后的"?"匹配第二个字符,xml类似,重点:".*"将匹配零个或者多个字符,而这里注意,"."是一个贪婪行字符,如果其后不加"?"进行修饰为"懒惰型字符",那么会出现意想不到的后果, 上图中这绝不是我们 ...
正则表达式_语法学习_5
有多少个匹配
一 、匹配一个或者多个字符
例一
目的 :匹配文本中的邮箱地址
**使用元字符+ **
用法 :
在字符或者字符集后面简单的加上一个“+“,则可匹配 至少一个符合该字符模式的字符
正则表达式 :[\w.]+@[\w.]+\.\w+
注意:
12345注意 细心的读者可能已经注意到了:我们没有对字符集合[\w.]里的.字符进行转义。尽管如此,它还是把原始文本里的.字符匹配出来了。一般来说,当在字符集合里使用的时候,像.和+这样的元字符将被解释为普通字符,不需要被转义——但转义了也没有坏处。[\w.]的使用效果与[\w\ .]是一样的。
二 、 匹配零个或者多个字符
例二
目的 :
12345匹配出合法的邮箱地址(邮箱地址开头不能以`.` 开头,所以我们的正则表达式需要 可以去匹配出第一个字母或数字,同时”@“前面也可以只有那**一个**合法字符,而不需要再出现 多个字母数字,也就是**第一个**合法字符之后的 **字符**是可(**多**)有可**无**的)
使用元字符:*
用法与+一致
正则表达式: \w[\w.]*@[\w.]+\.[\w]+
三 : 匹配零个 ...
正则表达式_语法学习__2至4
匹配任意字符的 “.”
注意
12341."matches any character (expect for line terminators)" ("."可以匹配除了换行符的任意字符) 2.当要匹配诸如"."这样的特殊字符时,要用"\"来转义 如若要匹配"."
则要使用 \.
匹配一组字符
用法 使用字符集合"[]"
例一
第一个像被匹配的字符只能是n或者s
例二
区间字符
A-Z
[A-Z]
A-Z 并且 0-9
[A-Z0-9]
例三
123取非操作要匹配任意的非字母数字字符则可以
[^A-Za-z0-9]
注意
12^的效果将作用于给定字符集合里的所有字符或字符区间,而不是仅限于紧跟在^字符后面的那一个字符或字符区间
小结
12345元字符[和]用来定义一个字符集合,其含义是必须匹配该集合里的字符之一。定义一个字符集合的具体做法有两种:一是把所有的字符都列举出来;二是利用元字符-以字符区间的方式给 ...