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正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

java 正则表达式

java编程基础 正则表达式

java匹配url的正则表达式

java正则表达式怎么书写?

java 正则表达式 ^java 是啥意思

JAVA正则表达式代码