以前就接触过正则表达式的概念,不过一直没有认真看,总觉得那些表达式太过复杂难懂了,今天用了一天的时间进去了学习了,终于会用了这么一点:
觉得最好的入门文章
[http://edu.yesky.com/edupxpt/18/2143018.shtml]
. 单字符匹配
? 可有可没有的单字符匹配
| 或,跟JAVA语言的 || 一样
[list] list是一个个符,如果一个列表,a[bcde]g,结果匹配是ab,ac,ad,ae,可以是连数,[0-9]
* 0 次或多次
+ 1次或多次,至少1次
? 0次或者1次
{n} n次
{n,m} n次到m次
例1:匹配邮政编码,国内都是6位数字
rex1 = [0-9]{6} 或者 /d{6}
注:/d == [0-9]
还有 /D == ^[0-9] ^是取反的意思
/w [a-zA-Z0-9]
/W ^[a-zA-Z0-9]
/s [/t/n/r/f]
/S ^[/t/n/r/f]
( ) 括句是把括句里边的表达式当成一个组,以后可以用语句查找出来
例2:匹配EMAIL,我认为EMAIL比较是有两个字符要找到的就是“@”,”。“
rex = ([a-zA-Z]+)([/d]*)?@/w*/.([/w-])+
这里分开来看"([a-zA-Z]+)",EMAIL是从字母开始的,必须是一个字母"[a-zA-Z]"或者一个以上"+"的,”([/d]*)?“ 可能有数字也可以没有。,”@“就是@,”/w*“一点之前的字符,”/.“就是”。“,([/w-])+判断有一个字符以上就可以了。
例子可能有点复杂,建议不了解基础知识的读读入门文章和上网搜索更多的资料。
以实例来说明一切,继续给出例子,注解我有时间会修正,现在做得比较粗糙
例3:匹配HTML中的"<"和">"中的内容了出来,把里面的东西提取出来,具体JAVA应用正则表达式请看我另一篇文章,这里只给出表达式
<([^>]+)>([^<]*)<(//w+)> 以<b>youlong</b>说明
< 就是第一个字符"<"
这里再说一下,如果要把需要的字符提取出来就用括号括出来
([^>]+) 括号就是要提取出来的信息,再分解"[^>]+",这个意思就是:[^>]+匹配除了符号">"以外一个以上的字符,这里[^>]也是说匹配在"<"号以前的所有字符出来,+号就是一个或者一个以上的字符
> 就是第一个字符">"