标签:
正则表达式 描述 一些规则,而这些规则通过规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式,用来查找和匹配字符串,
hi
这个简单的字符串就是一个正则表达式,精确匹配 hi
这个单词,但我们不仅仅需要找到这个 hi
,还要找到一个单独 hi
的单词,或是含有 hi
的字符的一个单词.那么我们就需要 元字符(metacharacter)
元字符是正则表达式规定的特殊代码,使用一个或是一组规定好的字符代替某些字符,这里的规定好的字符类似的有*
,.
,\b
...,而某些字符可能时一个特殊字符,像一个空格‘ ‘,或是一段任意字符.先来一个表,再解释
常用的元字符代码 | 说明 |
---|---|
* | 没有匹配任何字符,代表任意次数出现的模式,用来修饰前导字符 |
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
.
& *
是不是对 *
的感觉很诡异,什么任意次数,让我们把它和 .
放在一起考虑, .
匹配除换行符以外的任意字符,而将.*
则匹配不包含换行符的任意长度的字符串
\b
英文中是以空格作为分离单词的标志,而\b则匹配一个这样一个分割单词的位置
\bhi\b.*\bword\b
寻找一下在包含 hi 和 word 两个单词的句子,并且还在一行
####\d
匹配数字,没错它只匹配数字
0\d\d-\d\d\d\d\d\d\d\d
以0开头,然后是两个数字,然后是一个连字号“-” ,最后是8个数字
\b\w{6}\b
匹配刚好6个字符的单词,知道了码,\w
匹配的东西字符,数字,和下划线这些都是组成 单词的必要东西,所以一般用它匹配某个单词,而 {8}
,就是前导字符的修饰,和 *
类似,不过是指明了到底匹配了几次
^
$
^
用来匹配 查找字符串的开头
$
用来匹配 查找字符串的结尾
这两者和 \b
类似,都用来匹配字符串的某一个位置,而不是实际的一个字符
^\d{5,12}$
匹配长度为 5-12 的数字
如果你学过 c或是任何一门语言,他们都有采用特定字符控制输出的功能,而为了输出这些特定字符,就会利用到字符转义, 正则表达式也对 元字符 确定了一个字符转义的规则
加 \
,例如 \
变为\\
,.
变为\.
,以此类推
这里的重复不是单指一个特定字符的重复,也指不同字符出现的重复
代码/语法 | 说明 |
---|---|
*? | 重复任意次,但尽可能少重复 |
+? | 重复1次或更多次,但尽可能少重复 |
?? | 重复0次或1次,但尽可能少重复 |
{n,m}? | 重复n到m次,但尽可能少重复 |
{n,}? | 重复n次以上,但尽可能少重复 |
### 来个实例:Windows\d+
匹配Windows后面跟1个或更多数字
为了控制和表达更多的字符,引入了字符类,他是一个字符集合,使用[
,]
将其括起来。
在正则表达式中就充当一个元组
例如 [.?!]
匹配标点符号(.或?或!),[aeiou]
就匹配任何一个英文元音字母.
标签:
原文地址:http://www.cnblogs.com/dilidingzhi/p/4529817.html