本文共 1857 字,大约阅读时间需要 6 分钟。
\bhi\b.*\bLucy\b:先是一个单词hi,然后是任意个任意字符(但不能是换行),最后是Lucy这个单词
入门 学习正则表达式的最好方法是从例子开始,理解例子之后再自己对例子进行修改,实验。下面给出了不少简单的例子,并对它们作了详细的说明。 例1:\bhi\b
\b:单词的开头或结尾,也就是单词的分界处,它只匹配一个位置
hi helllo hi
匹配2个
例2:\bhi\b.*\bLucy\b
\bhi\b.*\bLucy\b:先是一个单词hi,然后是凭单个任意字符(但不甬换行)最后是LUcy这个单词
.:除了换行符以外的其它任意字符*:前边的内容可以连续重复使用任意次以使整个表达式得到匹配
.*:任意数量的不包含换行的字符
例3:0\d\d-\d\d\d\d\d\d\d\d
0\d\d-\d\d\d\d\d\d\d\d:以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字(也就是中国的电话号码。当然,这个例子只能匹配区号为3位的愽形)
\d: 个个数字(0,或1,或2,或3,或......)
可简写成:0\d{2}-\d{8}
\d后面的{2}({8})的意思是前面\d必须连接重复匹配2次(8次)
测试正则表达式 http://deerchao.net/tools/regester/index.htm
元字符
\ba\w*\b:匹配以字母a开头的单词----先是某个单词开始处(\b),然后是字母a,然后是任意数量的字母或数字(\w*),最后是单词结束处(\b)
源文本:apples 一二三四五六 123456 ______
^\d{5,12}$:匹配5位到12位数字,{5,12}重复的次数不能少于5次,不能多于12次
字符转义
www\.baidu\.com匹配www.baidu.com
重复
代码/语法 | 说明 |
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
Windows\d+:匹配Windows后面跟1个或更多数字,源文本:Windows1122
^\w+:匹配一行的第一个单词(或整个字符串的第一个单词,具体匹配哪个意思得看选项设置)
字符类
\(?0\d{2}[)-]?\d{8}:匹配几种格式的电话号码,像(010)88886666、022-22334455、02912345678、010 12345678、010)12345678、(010-12345678
分析:首先是一个转义字符
\(,它能出现0次或1次(
?),然后是一个0,后面跟着2个数字(
\d{2}),然后
是一个
)或
-或
空格,最后是8个数字(
\d{8} ) 分枝条件
上个例子中:010)12345678、(010-12345678,都为“不正确的格式"
0\d{2}-\d{8}|0\d{3}-\d{7}:
匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0351-1234567)
\(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}|0\d{3}[- ]?\d{7}|\(0\d{3}\)[- ]?\d{7}
(010)88888888
(010)-12345678
01012345678
03594085020
0359-4085020
(0359)-4085020
\d{5}-\d{4}|\d{5} 这个表达式用于匹配美国的邮政编码。美国邮编的规则是5位数字,或者用连字号间隔的9位数字。之所以要给出这个例子是因为它能说明一个问题: 使用分枝条件时,要注意各个条件的顺序 。如果你把它改成 \d{5}|\d{5}-\d{4} 的话,那么就只会匹配5位的邮编(以及9位邮编的前5位)。原因是匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了 转载地址:http://xqrmi.baihongyu.com/