Java正则表达式学习

Java正则表达式学习

正则表达式是一个字符串,用于描述匹配一个字符串集合的模式。Java正则表达式使用String类的matches方法匹配字符串。

可以使用正则表达式来判断一个字符串是否符合所规定的书写规则。
下列是Java中常用的正则表达式:
在这里插入图片描述
在这里插入图片描述
如果字符串匹配正则表达式,String类的matches方法将会返回true,如:

System.out.println("Java is fun".matches("Java.*"));

输出的结果为true
所以,如要判断一个字符串是否符合"长度为5~9个数字"的规则
可以使用:

System.out.println("1234".matches("\\d{5,9}"));

结果为false,而

System.out.println("123456".matches("\\d{5,9}"));

的结果为true

通过正则表达式,可以判断一个字符串是否符合所规定的书写规则
如要判断一个字符串是否为前缀为6至13位字符的qq或163邮箱,可以使用:

System.out.println("ab123456@qq.com".matches("\\w{6,13}+@+(qq|163)+\\.+com"));

运行程序,发现"ab123456@qq.com"符合条件,而"a>123456@qq.com"、“12345@qq.com”、“ab123456/qq.com”、"ab123456@sohu.com"等均不符合

==============================================================================
除了匹配字符串的功能,正则表达式也可以让我们实现检索的功能,让我们从字符串中获取想要的部分
String类中的replaceAll、replaceFirst、split方法使我们可以替换和拆分字符串
如下列代码:

System.out.println("abc bc a ac".replaceAll("a\\w", "e"));

输出的结果为"ec bc a e"
“\w"代表了单词字符,通过"a\w"检索字符串中存在字符"a"以及"a"之后连接任意单词字符的部分,并通过replaceAll方法将其替换为"e”
replaceFirst同理,不过替换的是第一次出现符合正则表达式的部分,如:

System.out.println("abc bc a ac".replaceFirst("a\\w", "e"));

输出的结果为"ec bc a ac",replaceFirst方法只替换了字符串中首个符合正则表达式的部分,即字符"abc bc a ac"中的"ab"部分
而split方法则拥有两个重载,分为split(regex)与split(regex,limit)
查看String类,发现:

    public String[] split(String regex) {
        return split(regex, 0);
    }

得知split(regex)重载中关于limit的默认值为0,从split(regex,limit)的方法中发现当limit等于0时会匹配字符串中所有符合条件的部分,得知split(regex)重载方法会切割字符串中每一处符合条件的部分,而split(regex,limit)则会切割符合条件的前limit - 1部分
进行测试:

		String[] str = "abc bc a ac".split(" ");
		System.out.println(str.length);

发现输出结果为4,即字符串被切割成了4部分,依次输出为"abc",“bc”,“a”,“ac”
再通过:

		String[] str = "abc bc a ac".split("a",3);
		System.out.println(str.length);

发现输出结果为3,即字符串被切割了2次,依次输出为"",“bc bc “,” ac”

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值