正则表达式

正则表达式是在JDK1.4之后才加入到java中,如果在1.4之前java中想要使用正则表达式的话,就必须要去apache的网站上下载一个正则表达式的开发包, 正则表达式最早是在PHP使用并得到广泛的好评,主要的功能是进行一些复杂字符串的校验。正则的规则基本上在每一门语言中都可以使用。

例子:使用普通的方式去验证一串字符串是否全部为数组

package com.test.regex;

 

public class RegexDemo01 {

    public static void main(String[] args) {

       String s = "13423a42565467568";

       char c[] = s.toCharArray();

       boolean bool = true;

       for (int i = 0; i < c.length; i++) {

           if(!(c[i]>='0' && c[i]<='9')){//只要有一个元素不再0-9之间吗,那么我们说字符串不是全部由数字组成

              bool = false;

              break;

           }

       }

       if(bool){

           System.out.println("字符串全部由数字组成");

       }else{

           System.out.println("字符串不全部由数字组成");

       }

    }

}

 

 

 

使用正则:

package com.test.regex;

 

public class RegexDemo02 {

    public static void main(String[] args) {

       String s = "1342342565467568";

       if(s.matches("\\d+")){

           System.out.println("字符串全部由数字组成");

       }else{

           System.out.println("字符串不全部由数字组成");

       }

    }

}

 

 

正则表达式:

      Pattern 类,列出了全部的正则表达式的内容

      主要的正则内容:

      ·字符匹配:

编号

正则内容

描述

1

[abc]

表示取值可能是a或b或c

2

[^abc]

表示取值不可能是a或b或c

3

[a-zA-Z]

表示全部由字母组成,大小写都可以

     

 

 

 

 

·简短表达式

编号

正则内容

描述

1

\d

表示由数字组成

2

\D

表示由非数字组成

3

\s

表示由空格组成\n \t

4

\S

表示由非空格组成

5

\w

表示由数字字母下划线组成

6

\W

表示由非数字字母下划线组成

·列出出现次数的表达式

X?

X,一次或一次也没有

X*

X,零次或多次

X+

X,一次或多次

X{n}

X,恰好 n

X{n,}

X,至少 n

X{n,m}

X,至少 n 次,但是不超过 m

·关系

XY

X 后跟 Y

X|Y

XY

手机号码的验证:

package com.test.regex;

 

public class RegexDemo3 {

    public static void main(String[] args) {

       String s = "12515967537";

       if(s.matches("1(3|4|5|8)\\d{9}")){

           System.out.println("是手机号码");

       }else{

           System.out.println("不是手机号码");

       }

    }

}

 

 

Pattern类:是正则操作最重要的一个类,所有的正则规范都需要在Pattern类进行规定。

Matcher类:进行正则匹配

      ·取得Pattern的实例:public static Pattern compile(String regex)

      ·取得Matcher类的实例:public Matcher matcher(CharSequence input)

      ·进行字符串拆分:public String[] split(CharSequence input)

      ·进行字符串的替换:public String replaceAll(String replacement)

范例1:进行字符串的校验

package com.test.regex;

 

import java.util.regex.Matcher;

import java.util.regex.Pattern;

 

public class RegexDemo4 {

    public static void main(String[] args) {

       String s = "13515967537";

       Pattern p = Pattern.compile("1(3|4|5|8)\\d{9}");//定义规则

       Matcher m = p.matcher(s);//s需要匹配的字符串

       if(m.matches()){

           System.out.println("是手机号码");

       }else{

           System.out.println("不是手机号码");

       }

    }

}

 

 

范例2:字符串拆分“abc123qwe9008sdf109werqwer220mmnnhni12580uh”

package com.test.regex;

 

import java.util.regex.Pattern;

 

public class RegexDemo5 {

    public static void main(String[] args) {

       String s = "abc123qwe9008sdf109werqwer220mmnnhni12580uh";

       Pattern p = Pattern.compile("\\d+");//定义规则

       String str[] = p.split(s);//进行拆分

       for (int i = 0; i < str.length; i++) {

           System.out.println(str[i]);

       }

    }

}

 

 

范例3:进行字符串的替换

package com. test.regex;

 

import java.util.regex.Matcher;

import java.util.regex.Pattern;

 

public class RegexDemo06 {

      public static void main(String[] args) {

           String s = "abc123qwe9008sdf109werqwer220mmnnhni12580uh";

           Pattern p = Pattern.compile("\\d+");//定义规则

           Matcher m = p.matcher(s);//s需要匹配的字符串

           s = m.replaceAll("中国您好");

           System.out.println(s);

      }

}

 

Pattern:主要用于定义正则规范,并进行字符串拆分

Matcher:主要作用是用于正则的校验,并进行字符串的替换

 

String类对正则的支持:java在JDK1.4之后加入了正则表达式,随后更新了String类的操作,而使得某些操作不需要对Pattern和Matcher类进行实例化,使用String类的方法就可以了。

      ·public boolean matches(String regex):进行正则的匹配

      ·public String replaceAll(String regex, String replacement):根据规定的正则进行替换

      ·public String replaceFirst(String regex, String replacement):根据正则替换第一个匹配正则的字符串

      ·public String[] split(String regex):根据规定的正则进行字符串的分割

范例:替换

package com.test.regex;

public class RegexDemo07 {

    public static void main(String[] args) {

       String s = "abc123qwe9008sdf109werqwer220mmnnhni12580uh";

       s = s.replaceAll("\\d+", "中国您好");

       System.out.println(s);

    }

}

 

范例:替换第一个匹配正则的字符串

package com.test.regex;

public class RegexDemo07 {

    public static void main(String[] args) {

       String s = "abc123qwe9008sdf109werqwer220mmnnhni12580uh";

       s = s.replaceFirst("\\d+", "中国您好");

       System.out.println(s);

    }

}

 

范例:进行字符串分割

package com.test.regex;

public class RegexDemo07 {

    public static void main(String[] args) {

       String s = "abc123qwe9008sdf109werqwer220mmnnhni12580uh";

       String str[] = s.split("\\d+");//进行拆分

       for (int i = 0; i < str.length; i++) {

           System.out.println(str[i]);

       }

    }

}

 

posted @ 2015-09-14 15:51  抹不掉的回忆  阅读(201)  评论(0编辑  收藏  举报