Java字符串之正则表达式

正则表达式

1.概述
Java中的正则表达式用来检测某一字符串是否满足所要求的格式,它的主要关联类有public final class Pattern extends Object implements Serializable和public final class Matcher extends Object implements MatchResult(java.util.regex包)。正则表达式是含有一些特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。

2.元字符
Java字符串之正则表达式_第1张图片
①单个字符

  • x 字符x
  • \ 反斜线字符
  • \n 换行符
  • \r 回车符

②多个字符

  • [abc] a、b 或 c
  • [ ^abc] 任何字符,除了 a、b 或 c
  • [a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内
  • [0-9] 0到9的字符

③预定义字符类

  • . 任何字符,如果想表示.字符,可以用.
  • \d 数字:[0-9]
  • \w 单词字符:[a-zA-Z_0-9]

④边界匹配器

  • ^ 行的开头
  • $ 行的结尾
  • \b 单词边界(非单词字符的地方)

⑤数量词

  • X? X,一次或一次也没有
  • X* X,零次或多次
  • X+ X,一次或多次
  • X{n} X,恰好 n 次
  • X{n,} X,至少 n 次
  • X{n,m} X,至少 n 次,但是不超过 m 次

3.功能
①判断功能
public boolean matches(String regex) ==
public static boolean matches(String regex,CharSequence input) (Pattern的方法)

String类中的方法,判断字符串是否符合regex规则。例,

 String regex="\\w+@\\w{2,6}\\.\\w{2,3}"; 
 String s="[email protected]";
 boolean b = s.matches(regex);
 System.out.println(b);   //true


 String regex="1[38]\\d{9}"; 
 String s="18246853452";
 String s2="17246853452";
 boolean b = s.matches(regex);
 System.out.println(b);   //true
 System.out.println(s2.matches(regex));   //false

②分割功能
public String[] split(String regex)
根据给定的正则表达式regex分割字符串,并返回字符串数组。例,

String s="34,5es,ty";
String[] s2 = s.split(",");
for(String s3:s2) {
     
	System.out.print(s3+"  ");   //34  5es  ty    
}

String s="34.5es.ty";
String[] s2 = s.split("\\.");   //如果只有一个.代表任意字符,此时无输出
for(String s3:s2) {
     
	System.out.print(s3+"  ");   //34  5es  ty  
}

String s="34   5es      ty";
String[] s2 = s.split(" +");    //空格+,+代表空格一次或多次
for(String s3:s2) {
     
	System.out.print(s3+"  ");   //34  5es  ty
}

String s="C:\\Program Files\\Intel";
String[] s2 = s.split("\\\\");   //四个反斜杠代表两个反斜杠,因为需要转义
for(String s3:s2) {
     
	System.out.print(s3+"  ");   //C:  Program Files  Intel 
}

③替换功能
public String replaceAll(String regex,String replacement)
对于字符串中符合正则表达式regex的部分用replacement代替。例,

String s="hah34haha89";
String regex="\\d";
String s2 = s.replaceAll(regex,"*");
System.out.println(s2);   //hah**haha**

④模式(Pattern)和匹配器(Matcher)的基本使用顺序

  • 把正则表达式编译成模式对象(Pattern的compile方法,参数是正则表达式)
  • 通过模式对象得到匹配器对象(Pattern的matcher方法,参数是被匹配的字符串)
  • 调用匹配器对象的功能

例,

String s = "156 37 58 4587 1 26 345 54 15?";
String regex = "\\b\\d{2}\\b";

Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(s);

while (m.find()) {
     
	System.out.print(m.group()+" ");   //37 58 26 54 15 
}

注:一定要先find(),然后才能group(),否则会出现IllegalStateException

你可能感兴趣的:(CoreJava,正则表达式,java,字符串)