首页 > 代码库 > 黑马程序员——Java正则表达式

黑马程序员——Java正则表达式

正则表达式
两类:Pattern模式类和Matcher匹配类
               Pattern主要是用来编译模型和生成匹配器matcher;
正则表达式基本方法
               //定义一个pattern,该pattern就是个f空两个k的模式
          Pattern p =Pattern .compile("f(.+?)(.+?)(.+?)k" );
           //按照p的模式匹配字符串
          Matcher m = p .matcher ("qqfucogffAkfkkkkkf15fkjjfqfi") ;
           while(m .find ()){
                    //无参group表示返回匹配到的子串
                   String s1 =m .group ();
                    //表示第几个括号的值,有几括号就有几个组~
                   String s2 =m .group (3) ;
                    //end表示找到的该子串的结尾的之后索引值
                   System .out.println( s1">>>"+s2 +"||" +m .end ());
/*                fucogffAk>>>ogffA||11
                    fkkkk>>>k||16
                   f15fk>>>f||22
*/
 
匹配日期,电话号码,身份证格式,邮箱网站等等
           //20世纪20年代
          Pattern p2 =Pattern .compile("(19)(2[0-9])" );
          Matcher m2 =p2 .matcher ("192152519204201911924-5") ;
           while(m2 .find ()){
                   System .out.println( m2group());
           }
/*      1921
          1920
          1924*/
筛选日期
          Pattern p4 = Pattern .compile ("(20)\\d\\d([- /.])(0[1-9]|1[012])\\2(0[1-9]|[12][0-9]|3[01])") ;
          Matcher m4 = p4 .matcher ( "2010-01-01 2007/08/13 1900.01.01 2009 01 01 1900-01.01 2000 02 31 1900 02 31") ;
           while ( m4find ()) {
                   System . out. println( m4group ());
           }
/*      2010-01-01
          2007/08/13
          2009 01 01
          2000 02 31*/
我国合法电话号码
          Pattern p3 =Pattern .compile("(\\d{3}-\\d{8}|\\d{4}-\\d{7})" );
          Matcher m3 =p3 .matcher ("021-55454445,41sbhfbh0755-6854555");
           while(m3 .find ()){
                   System .out.println( m3group());
           }
/*      021-55454445
          0755-6854555*/
将字符串中符合正则表达式的字串全部替换掉
          String string ="qqfucogffAkfkkkkkf15fkjjfqfi" ;
          String str =string .replaceAll ("f(.+?)(.+?)(.+?)k""hello") ;
          System .out.println( string);         
          System .out.println( str);
/*      qqfucogffAkfkkkkkf15fkjjfqfi
           qqhellohellokhellojjfqfi*/
正确书写正则表达式
预定义字符类
. 任何字符
\\d 数字:[0-9]
\\D 非数字: [^0-9]
\\s 空白字符:[ \t\n\x0B\f\r]
\\S 非空白字符:[^\s]
\\w 单词字符:[a-zA-Z_0-9]
\\W 非单词字符:[^\w]
字符
\0n 带有八进制值 0 的字符 n (0 <= n <= 7)
\0nn 带有八进制值 0 的字符 nn (0 <= n <= 7)
\0mnn 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7)
\xhh 带有十六进制值 0x 的字符 hh
\uhhhh 带有十六进制值 0x 的字符 hhhh
\t 制表符 (‘\u0009‘)
\n 新行(换行)符 (‘\u000A‘)
\r 回车符 (‘\u000D‘)
\f 换页符 (‘\u000C‘)
\a 报警 (bell) 符 (‘\u0007‘)
\e 转义符 (‘\u001B‘)
\cx 对应于 x 的控制符