Java正则表达式
Posted 白了又了白1992
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java正则表达式相关的知识,希望对你有一定的参考价值。
此时matches和equals显示的结果相同,返回值都为true,但实际上matches的功能更为强大,可以匹配符合一个模式的字符串集。
如: System.out.println("Java is cool".matches("Java.*"));
显示的结果同样为true,Java.*为正则表达式。下面将简要介绍正则表达式的功能。
1.matches(“x”),匹配的是指定的字符x;
System.out.println("Java".matches("B")); 输出false
System.out.println("Java".matches("J")); 输出true
2.matches("."),匹配的是任意单个字符(换行符除外);
System.out.println("Java".matches("J..a")); 输出true
System.out.println("Javb".matches("J..a")); 输出false
3.matches(“(ab|cd)”),匹配的是ab或者cd;
System.out.println("ef".matches("ab|cd")); 输出false
System.out.println("ab".matches("ab|cd")); 输出true
System.out.println("cd".matches("ab|cd")); 输出true
4.matches("[abc]"),匹配的是a或者b或者c;
System.out.println("Java".matches("Ja[uxve]a")); 输出true System.out.println("Java".matches("Ja[uxwe]a")); 输出false
5.matches("[^abc]"),匹配的是除了a或者b或者c以外的任何字符;
System.out.println("Java".matches("Ja[^uxwe]a")); 输出true
System.out.println("Java".matches("Ja[^uxve]a")); 输出false
6.matches("[a-z]"),匹配的是a到z;
System.out.println("Java".matches("Ja[u-z]a")); 输出true
System.out.println("Java".matches("Ja[a-f]a")); 输出false
7.matches("[^a-z]"),匹配的是a到z以外的任意字符;
System.out.println("Java".matches("Ja[^a-f]a")); 输出true
System.out.println("Java".matches("Ja[^u-z]a")); 输出false
8..matches("[a-e[m-p]]"),匹配的是a到e或者m到p;
System.out.println("Java".matches("Ja[u-z[a-d]]a")); 输出true
System.out.println("Java".matches("Ja[h-m[a-d]]a")); 输出false
9.matches("[a-e&&[c-p]]"),匹配的是a到e和c到p的交集;
System.out.println("Java".matches("Ja[h-m[h-l]]a")); 输出false
System.out.println("Java".matches("Ja[a-x[u-x]]a")); 输出true
10.matches("\\\\d"),匹配的是一位数字(等同于[0~9]);
System.out.println("Java2".matches("Java(\\\\d)")); 输出true
System.out.println("Javaa".matches("Java(\\\\d)")); 输出false
11.matches("\\\\D"),匹配的是一位非数字;
System.out.println("Javaa".matches("Java(\\\\D)")); 输出true
System.out.println("Java2".matches("Java(\\\\D)")); 输出false
12.matches("\\\\w"),匹配的是单词字符(单词字符是所有的字母,数字和下划线字符);
System.out.println("Javaa".matches("Java(\\\\w)")); 输出true
System.out.println("Java$".matches("Java(\\\\w)")); 输出false
13.matches("\\\\W"),匹配的是非单词字符;
System.out.println("Java$".matches("Java(\\\\W)")); 输出true
System.out.println("Java2".matches("Java(\\\\W)")); 输出false
14.matches("\\\\s"),匹配的是空白字符;
System.out.println("Java ".matches("Java(\\\\s)")); 输出true
System.out.println("Javaa".matches("Java(\\\\s)")); 输出false
15.matches("\\\\S"),匹配的是非空白字符;
System.out.println("Javaa".matches("Java(\\\\S)")); 输出true
System.out.println("Java ".matches("Java(\\\\S)")); 输出false
16.matches("p*"),匹配的是0或者多次出现模式p;
System.out.println("abab".matches("(ab)*")); 输出true
System.out.println("aaaa".matches("(ab)*")); 输出false
17.matches("p+"),匹配的是1次或者多次出现模式p;
System.out.println("able".matches("(ab)+.*")); 输出true
System.out.println("a".matches("a+b*")); 输出true
System.out.println("c".matches("a+b*")); 输出false
18.matches("p?"),匹配的是0或者1次出现模式p;
System.out.println("Java".matches("J?Java")); 输出true
System.out.println("ava".matches("J?ava")); 输出true
System.out.println("Java".matches("J?Mava")); 输出false
19.matches("p{n}"),匹配的是正好出现n次模式p;
System.out.println("Java".matches("Ja{1}.*")); 输出true
System.out.println("Java".matches(".{2}")); 输出false
20.matches("p{n,}"),匹配的是至少出现n次模式p;
System.out.println("aaaa".matches("a{1,}")); 输出true
System.out.println("aaaa".matches("a{5,}")); 输出false
21.matches("p{n,m}"),匹配的是出现n到m次(两侧都包含)模式p;
System.out.println("aaaa".matches("a{1,4}")); 输出true
System.out.println("aaaa".matches("a{6,8}")); 输出false
22.matches("\\p{P}"),匹配的是一个标点字符;
System.out.println("J?a".matches("J\\\\p{P}a")); 输出true
System.out.println("Jaa".matches("J\\\\p{P}a")); 输出false
====================================================
"*"等同于{0,},"+"等同于{1,},"?"等同于"{0,1}。
其中*,?,{n},{n,},{n,m},+被称为量词符,要注意不要在重复量词符中使用空白。
替换和拆分字符串
replaceFirst的作用是替换匹配到的第一个字符串
System.out.println("Java Java Java".replaceFirst("v\\\\w","wi")); 输出Jawi Java Java
replaceAll的作用是替换匹配到的所有字符串
System.out.println("Java Java Java".replaceAll("v\\\\w","wi")); 输出Jawi Jawi Jawi
拆分
split(regex)方法使用使用匹配的分隔符将一个字符串分割成子字符串。
split(regex,limit)方法,limit参数确定模式匹配多少次。如果limit<=0,则此方法等同于第一种方法,反之,则最多匹配limit-1次。
注意:默认情况下,量词符都是尽可能多次地进行匹配。
例如:System.out.println("Jaaavaa".replaceFirst("a+", "R")); 输出JRvaa
可以通过在后面加"?"的方法来减少匹配的次数。
例如:System.out.println("Jaaavaa".replaceFirst("a+?", "R"));
此时就会输出JRaavaa
以上是关于Java正则表达式的主要内容,如果未能解决你的问题,请参考以下文章