正则表达式
一、概述
- 正则表达式是用来描述或者匹配一系列符合某个语句规则的字符。
二、单个符号分类和介绍
1、 .
符号 : 用来匹配任意的单一字符。
- 用法 : 例如
t.o
表示可以匹配形如 ·tao
、t&o
、tto
等字符串 ,但不能匹配ttoo
、to
等字符串。
2、[ ]
符号 :只有方括号里指定的字符才可以参与匹配,同时也只能匹配单个字符。
- 用法 : 例如
t[abcd]n
就只可以匹配 :tan
,tbn
,tcn
,tdn
。
3、 |
符号 : 这个符号相当于逻辑”或“,可以选其中的一项匹配。
- 用法:例如
t(a|b|c|dd)n
只能匹配:tan
,tbn
,tcn
,tddn
。
4、表示匹配次数的符号
*
0次或多次。+
1次或多次。?
0次或1次。{n}
恰好n次。{n,m}
从n次到m次。
5、^
符号 :表示否 , 即表示不想匹配的字符(用在方括号内)。
- 表达式 :
[^x]
的意思是 第一个字符不能是 x 。
6、\S
符号 : 非空字符(S大写)。
7、\s
符号: 空字符,但只可以匹配一个空格、制表符、回车符和换页符(小写)。
8、 \r
符号 : 空格符 ,作用和 \n
、\tab
相同。
三、快捷符号
1、\d
表示 [0—9]
2、\D
表示[^0—9]
3、\w
表示[0—9A—Z_a—z]
4、\W
表示[^0—9A—Z_a—z]
5、\s
表示[\t\n\r\f]
6、\S
表示[^\t\n\r\f]
四、 正则表达式在JAVA中的主要应用
1、判断
public boolean matches(String regex)
例子 : 判断手机号是否以19或者11开头
package Yjs;
import java.util.Scanner;
public class RegexDm {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入手机号 :");
String s = sc.nextLine();
String regex = "1[19]\\d{9}";
boolean flag = s.matches(regex);
System.out.println("flag:"+flag);
}
}
2、分割
public String[] split(String regex)
package Yjs;
import java.util.Scanner;
public class RegexDm {
public static void main(String[] args){
String age = "18-24";
String regex = "-";
String[] strArr = age.split(regex);
int startAge = Integer.parseInt(strArr[0]);
int endAge = Integer.parseInt(strArr[1]);
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的年龄:");
int a = sc.nextInt();
if (a >= startAge && a <= endAge){
System.out.println("YES");
}else{
System.out.println("NO");
}
}
}
3、 替换
public String replaceAll(String regex,String replacement)
package Yjs;
public class RegexDm {
public static void main(String[] args){
String s = "12342jasfkgnas234";
String regex = "\\d";
String ss = "*";
String result = s.replaceAll(regex,ss);
System.out.println(result);
}
}