正则表达式 字符
1 常用的正则表达式元字符
. | 匹配任意字符 | * | 修饰匹配符为0次任意次 |
^ | 匹配输入行的开始位置 | $ | 匹配输入行的结束位置 |
+ | 修饰匹配符至少1次 | ? | 修饰匹配符0次或1次 |
[] | 用来自定义匹配“多种字符”表达式 | {} | 修饰匹配次数的符号 |
"s | 空格 | "S | 非“空格”字符 |
"d | 匹配任何一个0-9数字 | "D | 匹配一个非0-9数字 |
"w | 匹配一个 数字、字母或下划线 | "W | 匹配一个非 数字、字母和下划线 |
*? | 非贪婪修饰匹配符为0次任意次 | +? | 非贪婪修饰匹配符至少一次 |
?? | 非贪婪修饰匹配符0次或1次 | () | 把一个表达式做为一个匹配整体 |
| | 两边的表达式为“或”的关系 |
2 转义字符
在正则表达式中对一些特殊符号和特殊含义的字符的使用需要用“"”进行转义操作,需要转义的字符除了包括以上列出的“元字符”外,还有以下这些具有具体含义的字符:"t | 横向制表符 | "n | 换行符 |
"r | 回车符 | "" | 转义字符本身 |
3 修饰符
用在正则表达式结尾。例如 /asdf/i,“i”即为“修饰符”,意思是不区分大小写的匹配“asdf”。所有修饰符的含义如下表:g | 全局匹配 | i | 忽略大小写 |
m | 多行匹配 | s | 把整个匹配串当作一行处理 |
x | 允许注释和空格的出现 | U | 非贪婪匹配 |
-----------------------------------------------
4.3 匹配多次
关于“匹配次数”的语法的使用有两种,一种是使用"{"};一种是{},但是无论如何含义都是一样的:- RE{N}:是精确的匹配RE N次
- RE{N,}:会匹配RE N次或多于N次
- RE{N,M}:会匹配RE在N次和M次之间
- RE{,M}:匹配RE小于或等于M次
很多人对正则表达式不大了解,的确,一堆符号看起来乱七八糟,但正则表达式在我们的程序中或工作中无处不在,我更喜欢将正则表达式称做字符串匹配表达式。一大堆名词术语我不多讲,下面就一些实例来分析正则表达式:
1、电话号码匹配
中国的电话号码都是区号+号码组成,0开头,区号2到3位数,号码是7到8位数字。于是我们可以简单写成: 0"d{2,3}匹配区号,d{7,8}匹配号码。电话组合也分几种情况,区号-号码,区号空格号码,(区号)号码。要想完全匹配,我们可以写成: "(?0"d{2,3}[) -]?"d{7,8}
解释如下:"代表转义字符,因为要匹配(,于是需要将其转义,即"(匹配(。接着?代表(出现的次数是0次或1次。然后是区号,接着是)空格或者-出现1次或0次,然后接下来是7位号码或8位号码。
看到这里,可能大家肯定会发现这个表达式的不足,例如(01066666666、010)66666666也可以完全匹配,所以我们可以写成0"d{2,3}[ -]?"d{7,8}|"(0"d{2,3}[)]"d{7,8}
注意:这里|符号是或的意思。
2、数组字符传递匹配
假如一段字符串是:windows3ox4,50linux80,90,100 我们要做的工作是匹配数字3和4,5和80,90,100。那么如何书写正则表达式呢? 首先匹配数字,显然可以写成"d+,我们可以分析其他的几个是数字之间有,号,那么可以拆分一下:即开头由数字开始,接着是如数个“,数字”重复而成。所 以我们初略写成"d+[,"d+]+,即匹配无数个数字之间夹杂着,号,+代表重复1次或更多次,*代表重复0次或更多次,所以这里也可以写成"d+[, "d+]*,那么要想完全匹配,这里我们就只能加上“或”符号了。于是最终的可以写成"d+[,"d+]+|"d+
3、13"d{9}匹配13后面跟9个数字(中国的手机号)
4、<("w+)> 查找尖括号括起来的字母或数字(即HTML/XML标签)
代码 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
"w | 匹配字母或数字或下划线或汉字 |
"s | 匹配任意的空白符 |
"d | 匹配数字 |
"b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
代码/语法 | 说明 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
代码/语法 | 说明 |
---|---|
"W | 匹配任意不是字母,数字,下划线,汉字的字符 |
"S | 匹配任意不是空白符的字符 |
"D | 匹配任意非数字的字符 |
"B | 匹配不是单词开头或结束的位置 |
[^x] | 匹配除了x以外的任意字符 |
[^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
本文来自博客园,作者:CarlZeng,转载请注明原文链接:https://www.cnblogs.com/backuper/archive/2008/10/07/1305749.html
需求沟通链接 扫客服加群: