文章目录
- Java 正则表达式
- 匹配单个字符
- 匹配多个字符
- 匹配0次或者一次
- 匹配数字或者非数字
- 匹配任何字符类字符0-9 a-z A-Z
- 或者
- 匹配中文字符
- 匹配空白字符
- 任意字符
Java 正则表达式
正则表达式定义了字符串的模式。
正则表达式可以用来搜索、编辑或处理文本。
正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
下面为案列及代码。
注意:
matches方法中,() 中双引号中的内容为正则表达式
匹配单个字符
java">String str1 = "a";
//只匹配字符a
System.out.println(str1.matches("a"));//TRUE
//匹配0-9,a-z,A-Z 的单个字符
System.out.println(str1.matches("[a-z0-9A-Z]"));//TRUE
//^在[]里面代表非 , 匹配不是0-9,a-z,A-Z 的单个字符
System.out.println(str1.matches("[^a-z0-9A-Z]"));//false
匹配多个字符
java">String str2 = "java";
//直接匹配相同的字符串
System.out.println(str2.matches("java"));//true
//一个字符一个字符的匹配
System.out.println(str2.matches("[a-z0-9A-Z][a-z0-9A-Z][a-z0-9A-Z][a-z0-9A-Z]"));//true
//{}代表几次
System.out.println(str2.matches("[a-z0-9A-Z]{4}"));//true
//+代表一次或者多次
System.out.println(str2.matches("[a-z0-9A-Z]+"));//true
System.out.println("".matches("[a-z0-9A-Z]+"));//false
//*表示0次或者多次
System.out.println(str2.matches("[a-z0-9A-Z]*"));//true
System.out.println("".matches("[a-z0-9A-Z]*"));//true
匹配0次或者一次
java">String str3 = "abc";
//匹配3-4个字符
System.out.println(str3.matches("[a-z0-9A-Z][a-z0-9A-Z][a-z0-9A-Z][a-z0-9A-Z]?"));//true
System.out.println("abcde".matches("[a-z0-9A-Z][a-z0-9A-Z][a-z0-9A-Z][a-z0-9A-Z]?"));//false
匹配数字或者非数字
注意:
此时使用 \ \ 是因为 \ 为转义
java">String str4 = "123";
String str5 = "abc";
//匹配数字 /d
System.out.println(str4.matches("\\d+"));//true
System.out.println(str5.matches("\\d+"));//false
//匹配非数字
System.out.println(str4.matches("\\D+"));//false
System.out.println(str5.matches("\\D+"));//true
匹配任何字符类字符0-9 a-z A-Z
java">String str6 = "123";
String str7 = "abc";
String str8 = "%^&";
//\w 匹配 0-9 a-z A-Z
System.out.println(str6.matches("\\w+"));//TRUE
System.out.println(str7.matches("\\w+"));//TRUE
System.out.println(str8.matches("\\w+"));//FALSE
//\W 匹配非 0-9 a-z A-Z
System.out.println(str6.matches("\\W+"));//FALSE
System.out.println(str7.matches("\\W+"));//FALSE
System.out.println(str8.matches("\\W+"));//TRUE
或者
java">String sex1 = "男";
String sex2 = "女";
String sex3 = "男女";
//|前后代表或者的关系 , 一般匹配多个字符时 带()即可
System.out.println(sex1.matches("[男]|[女]"));//true
System.out.println(sex2.matches("[男]|[女]"));//true
System.out.println(sex3.matches("[男]|[女]"));//true
匹配中文字符
java">String str9 = "我爱中国";
String str10 = "ilovechina";
//匹配中文 \u4e00-\u9fa5 为unicode 编码范围
System.out.println(str9.matches("[\u4e00-\u9fa5]+"));//true
System.out.println(str10.matches("[\u4e00-\u9fa5]+"));//false
//匹配非中文字符
System.out.println(str9.matches("[^\u4e00-\u9fa5]+"));//false
System.out.println(str10.matches("[^\u4e00-\u9fa5]+"));//true
匹配空白字符
String str11 = "abc";
String str12 = " ";//空格 和 制表符
// \s 匹配空白字符
System.out.println(str11.matches("[\\s]+"));//false
System.out.println(str12.matches("[\\s]+"));//true
// \S 匹配非空白字符
System.out.println(str11.matches("[\\S]+"));//true
System.out.println(str12.matches("[\\S]+"));//false
任意字符
· 除了\n外的其他字符
可以使用 \w\W 或者 \D\d 等其他类似的方式来匹配任意字符
注意:
代码中出现" \ \ ",均为’’,因为java中\的作用是用来做转义字符使用的。