赞
踩
正则表达式是用来匹配字符串内容的一种规则,许多程序设计语言都支持利用正则表达式进行字符串操作,例如python中的re模块就是正则模块,此模块中的方法可以支持正则表达式的使用,正则表达式常用于处理文本信息,本文记录一些正则表达式的基础知识。
介绍一个正则表达式在线测试的网页:正则表达式在线测试
介绍: 在同一位置上可能出现的各种字符组成了一个字符组,在正则表达式中用 [] 表示
字符可以是很多类型,如字母、数字、标点等
用法:[所需要匹配字符] – 从左到右,范围应从小到大
示例:
字符组 | 含义 |
---|---|
[abcdef] | 匹配字符 abcdef |
[0-9] | 匹配 0~9 的数字 |
[a-z] | 匹配 a~z 的字母 |
[a\-z] | 匹配字母 a 或 z 或符号 - |
[a-zA-Z0-9] | 匹配小写字母 a~ z,大写字母A~Z,数字0~9,即所有的字母和数字 |
[A-z] | 可以匹配上所有的大小写字母和一些特殊符号 |
说明:
1). 由于在正则表达式中,’ - ’ 是关键字符,所以在我们需要匹配时,要使用 ‘ \ ’ 进行转义;
2). 当我们使用 [A-z] 这样的规则时,匹配到的不只是字母a~Z,由于在ASCII码中,A~z中间还有几个字符,所以若待匹配字符串中有相应的字符也会被匹配上;
举例如下:
介绍: 元字符是在使用正则表达式时一些既定的匹配规则
示例:
元字符 | 匹配规则 |
---|---|
. | 匹配除了换行符以外的任意字符 |
\w | 匹配 数字、字母、下划线(word) |
\d | 匹配 数字 (digit) |
\s | 匹配 任意的空白符(space) |
\n | 匹配 一个换行符 |
\t | 匹配 一个制表符 |
\b | 匹配 一个单词的结尾 |
^ | 匹配 字符串的开始 (最常用) |
$ | 匹配 字符串的结尾 (最常用) |
\W | 匹配 非数字、字母、下划线(word) |
\S | 匹配 非任意的空白符 |
\D | 匹配 非数字 |
a|b | 匹配 字符a或者字符b |
() | 匹配 括号内的表达式,也表示一个组 |
[ ] | 匹配 字符组中的字符 |
[^ ] | 匹配 除了字符组中字符的所有字符,此时^表示 非 的意思,不是匹配开始的意思 |
说明:
1). \s 匹配所有的空白符,包括空格,制表符,换行符;
2). \b 匹配单词的结尾,’.\b’ 就匹配所有单词的结尾,并注意,换行符也被当作一个独立的单词对待;
3). ^$ 匹配空;
4). () 写在一个小括号内的正则表达式是一个分组;
5). 使用逻辑或,即:| 时,往往从左到右依次匹配,若能匹配上左边的,就不再匹配右边的。
介绍: 上面的匹配都是匹配单个字符,如果我们需要匹配多个字符或一个句子,就需要使用量词来约束匹配条件。
示例:
关键字 | 含义 |
---|---|
* | 重复 零次或更多次 |
+ | 重复 一次或更多次 |
? | 重复 零次或一次 |
{n} | 重复 n次 |
{n, } | 重复 n次及以上 |
{n, m} | 重复 n到m次 |
说明:
1). 数量限制必须跟在匹配规则的后边,且这个限制只约束紧跟它前边的那个规则
2). 当说到重复 0 次时,就是当没有时也能匹配上,甚至换行符也能匹配上,0 跟 空 果然无论如何都是个很抽象的概念;
特别注意:
需要特别注意的是,前边的 *,+,{},? 等都是贪婪匹配,即尽可能多的去匹配,但是 匹配的数量限制后加 ?,就变成了非贪婪匹配,即:惰性匹配。
例如:{1,2} 是按照数量限制为2进行匹配,
{1,2}? 是按照数量限制为1进行匹配
举例:
当我们使用 .* 进行匹配时,在无任何文本信息的情况下,就已经能匹配到一个结果了:
贪婪匹配 & 非贪婪匹配:
1). <.*> 匹配是从左向右匹配,先匹配到 < 再匹配任意字符一直向后匹配,直到匹配到不能匹配的时候,再看往右匹配条件还有 > 字符,则又向前回溯,找到第一个 > 字符时,本次匹配结束。
2). <.*?> 先匹配到 < 再匹配任意字符一直向后匹配,找到第一个 > 字符时则本次匹配结束.
介绍: 需要进行整体约束的规则,用()括起来
举例: 身份证匹配
要求:
输入字符串为长度15或18:
为15时:全部由数字组成,首位不能为0;
为18时:首位不能为0,前17位是数字,末尾可能是数字或x
两种匹配规则:
^[1-9](\d{16}(x|\d))?$|^[1-9]\d{14}$
^[1-9]\d{14}(\d{2}[0-9x])?$
注意: 使用逻辑 | 时,应先将长的规则写在 | 的左边,否则匹配到短的字符就不会再向后匹配就会得到错误的结果。
介绍: 转义符:\ 用来对关键字进行转义;
当我们需要匹配例如 \b \w 等的元字符时,就需要先将匹配规则转义再进行匹配;
例如:
此表达式用于:取尽量少的任意字符,
例如:.*?x – 取前边任意长的字符,直到第一个x出现
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。