欢迎来到Java学习网!
设为首页 | 加入收藏
当前位置: 首页 > Java语言 > HTML教程 >

正则表达式学习笔记(1) 行与字符

行的开始和结束 开始符号:^ 结束符号:$ 如:^cat 应该理解为以c作为一行的第一个字符,紧接着是a,然后是t
  例如:String str = "catabdcatdetfcat"
  ^cat : 验证该行以c开头紧接着是a,然后是t
  cat$ : 验证该行以t结尾倒数第二个字符为a倒数第三个字符为c
  ^cat$: 以c开头接着是a->t然后是行结束:只有cat三个字母的数据行
  ^$ : 开头之后马上结束:空白行,不包括任何字符^ : 行的开头,可以匹配任何行,因为每个行都有行开头
  字符组:[]表示:"或" 如:[abc]:a或者b或者c
  例如:String str = "My Name is YangKai";
  a[mn] : 查找a后面是m或者n的单词
  [Nn][ag] : 查找N或者n后面是a或者g的单词
  字符组内的连字符:- 表示:范围从开始到结束,连字符'-'只有出现在字符组内部的时候才是连字符,其他情况只表示字符:"-"没有特殊意义。如果字符'-'出现在字符组内的第一个位置或者出现在字符组内的脱字符"^"之后,则该字符不是连字符只是一个字符而已
  例如:String num = "012C34A5B!#@$-%$^%&&*&(-)*)&6FR7GD89";
  [2-6] : 查找2到6之间的数字[A-R] : 查找从A到R之间的字符
  [2-6A-R] : 查找从2到6从A到R之间的字符
  [2-6A-R!@^&*] : 查找从2到6从A到R之间的字符和!@^&*等特殊字符
  [-2-6A-R] :查找从2到6从A到R之间的字符和-
 脱字符:^ :当^出现在字符组内的第一个位置时表示:排除,即:除了……之外的,如果脱字符没有在[]字符组的第一个位置,那么该^仅表示一个字符,没有特殊意义
   [^0-9] : 查找字符串中除数字外的字符
   [^2-6A-R] : 查找字符串中除了2到6之间的数字和A-R之间的字符外的所有字符
   [^-2-6A-R] : 查找字符串中除了2到6之间的数字和A-R之间的字符和"-"外的所有字符(此处"-"只是一个字符,没有连字符的含义)
  注意一下这种情况:String str = "abcdabcd";如果我们用表达式:d[^0-9] 只能匹配到字符串中的da,而不能匹配结尾处的d,因为结尾处的d没有任何东西让脱字符^去排除如果我们在结尾加上一个空格的话,就可以匹配到了。
  用"."去匹配任意字符
  例如:03/19/76 03-19-76 03.19.76 可以用03[-/.]19[-/.]76去匹配,同样可以用03.19.76去匹配,但是03.19.76也可能匹配到03-19A76,因为"."可以匹配任何字符
  注意:如果"."放在字符组外面的话表示元字符,但是如果放在字符组里面,则表示一个普通的"."

正则表达式学习笔记(2) 多选结构

"|":意思是"或",他可以把多个子表达式组合成一个总的表达式,而这个总表达式拥有子表达式的全部能力例如:Yang 可以匹配 My name is YangKai,that is my first name is Yang and my second name is Kai中的Yang,Kai

  可以用来匹配其中的Kai,但是这两个子表达式要么只能取Yang要么只能取Kai,如果我们要求一次性把所有的Yang和Kai都取出来,我们就可以这样做:Yang|Kai这个时候应该区别一下多选结构与字符组[],字符组[]的单位为单个字符,意思是字符组[]总是以字符为单位去匹配,本例中如果我们这样:[YangKai],那么该表示的作用是匹配字符串中所有的Y,所有的a,所有的n……,他不会去把Yang作为一个单位,也不会把 Kai作为一个单位,而每个多选结构可以是一个单独的正则表达式,可以去匹配任意长度的文本。

  同样应该注意的一点是:如果把"|"放在字符组[]的内部,他只是一个普通的字符,不是元字符。

  多个多选结构可以用()组合,如:a(ng|dd|ni)k的意思是匹配a后是ng或者是dd或者是ni然后是k的字符串,又如:^(Form|To|Mail) : 以From或者To或者Mail开头的行


正则表达式学习笔记(3) 简单量词

量词用于指定特定模式出现的次数,这个次数可以是硬性的,如某个字符应该出现4次,如果没有出现四次就是错的,也可以是软性的,如某个字符应该出现0至4次,意思是该字符可以出现,也可以不出现,可以出现一次,两次,也可以出现三次,四次。

1正则元字符 描述
2-----------------------------------------------------------------------
3 ? 可以出现0次或1次,但至多出现1次
4 * 可以出现任意次,也可以不出现
5 + 出现1次或多次,但至少出现1次
6 {n} 一定出现n次
7 {n,m} 至少出现n次,但至多不能超过m次
8 {n,} 可以出现任意次,但至少出现n次

  例如:我们要去匹配以下字符串:

<input type=text/>
<input type=button />
<input type=password />
  可以用下面的表达式:
1<input +type *= *(button|text|password){1} */>
  该表达的意思是:以"<"开始紧接着是i->n->p->u->t->至少一个空格 ->t->y->p->e->任意个空格->=->任意个空格->一个button或者一个text或者一个password ->任意个空格->/最后以">"结束。
 

    相关教程
    推荐内容