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

  • 15
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值