找了不少正则表达式的教程,始终没有满意的,要不就是直接给出一张元字符的表,要不就是给出各类经常使用的表达式,直到我看到这篇http://deerchao.net/tutorials/regex/regex.htm
这篇教程简单明了的写了正则表达式的做用及怎样使用,下面是我看完的我的理解:正则表达式
理解了正则表达式的做用才能更好的掌握它,正则表达式的做用就是为了匹配字符串:
因此正则里的语法都是为了方便地匹配字符串而生的.net
下面是正则里最基本的几个匹配符:code
. 匹配除换行符之外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束
有时咱们须要自定义匹配的范围htm
[aeiou] [a-z0-9A-Z_]
只要知足括号里的任意字符即知足匹配。教程
有时咱们须要取反:字符串
\W 匹配任意不是字母,数字,下划线,汉字的字符 \S 匹配任意不是空白符的字符 \D 匹配任意非数字的字符 \B 匹配不是单词开头或结束的位置 [^x] 匹配除了x之外的任意字符 [^aeiou] 匹配除了aeiou这几个字母之外的任意字符
这些只能匹配单个的字符,有时咱们要匹配多个重复的:get
? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更屡次 {n,m} 重复n到m次 * 重复零次或屡次 + 重复一次或屡次
分枝指的是有几种规则,若是知足其中任意一种规则都应该当成匹配,具体方法是用|把不一样的规则分隔开。io
如:
0d{2}-d{8}|0d{3}-d{7}这个表达式能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)。语法
分组指的是能够用小括号把一条表达式括起来当成一个子表达式来用,而后你就能够指定这个子表达式的重复次数了。方法
如:
(d{1,3}.){3}d{1,3}是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它:d{1,3}匹配1到3位的数字,(d{1,3}.){3}匹配三位数字加上一个英文句号(这个总体也就是这个分组)重复3次,最后再加上一个一到三位的数字(d{1,3})。
有时咱们要匹配的字符串可能包含正则表达式语法提供的一些元字符,这时咱们就要用到字符转义:
例如:deerchao.net匹配deerchao.net,C:\Windows匹配C:Windows。