JAVA正则表达式的初次了解与学习

1.为什么要引出正则表达式

        经常会需要编写代码来验证用户输人,比如验证输入是否是一个数字,是否是一个全部小写的字符串,或者社会安全号。为了能够更加快速便捷的处理这些问题,一个简单而有效的做法是使用正则表达式来完成这个任务。
2.什么是正则表达式

        正则表达式( regular expression,简写为regex)是一个字符串,用来描述匹配一个字符串集合的模式。对于字符串处理来说,正则表达式是一个强大的工具。 可以使用正则表达式来匹配、替换和拆分字符串。

3.从String matches方法开始学习正则表达式

System.out.println("java is fun".matches("java.*"));
System.out.println("java is cool".matches("java.*"));
System.out.println("java is powerful".matches("java.*"));

 

        matches不仅可以匹配一个固定的字符串,还可以匹配符合一个模式的字符串集。

        "java.*"就是一个正则表达式,它描述了一个字符串模式,以Java开始,后面跟0个或者多个字符串。这里,子字符串.*匹配0或者多个任意字符。

4.正则表达式语法

        正则表达式由字面值字符和特殊符号组成,主要的字符由下表可见。

 注意:上表中倒数第二条 有错 "\\d{n,m}"表示数字出现最少n次,最多m次,比如\\d{2,4},表示数字最多4个,最少2个,是包含4的。

        System.out.println("1".matches("\\d{2,4}"));
		System.out.println("12".matches("\\d{2,4}"));
		System.out.println("123".matches("\\d{2,4}"));
		System.out.println("1234".matches("\\d{2,4}"));
		System.out.println("12345".matches("\\d{2,4}"));
		System.out.println("123456".matches("\\d{2,4}"));

附:

 5.实际应用 

        示例1:社会安全号

        社会安全号码的模式是xxx-xx-xxx,其中x是一位数字。社会安全号的正则表达式可以描述为        [\d]{3}-[\d]{2}-[\d]{3}

例如

System.out.print("111-22-333".matches("[\\d]{3}-[\\d]{2}-[\\d]{4}")); \\true
System.out.print("11-22-333".matches("[\\d]{3}-[\\d]{2}-[\\d]{4}")); \\false

        示例2:一段数字以偶数结尾

        偶数以数字0、2、4、6或者8结尾。偶数的模式可以描述为
        [\\d]* [02468]

例如      

System.out.print("123456".matches("[\\d]*[02468]"));\\true
System.out.print("12345".matches("[\\d]*[02468]"));\\false


         示例3:电话号码

        电话号码的模式是(xxx)xxx-xxxx,这里x表示数字,并且第一位不能是0,则电话号码的正则表达式可以表示为
        \\([1−9][\\d]{2}\\) [\\d]{3}-[\\d]{4}                                                                                                   

 例如

System.out.println("(921)921-2728".matches("\\([1-9][\\d]{2}\\)[\\d]{3}-[\\d]{4}"));
System.out.println("921-2728".matches("[\\d]{3}-[\\d]{4}"));
System.out.println("921-2728".matches("\\([1-9][\\d]{2}\\)[\\d]{3}-[\\d]{4}"));

         示例4:姓的模式

        假定姓由最多25个字母组成,并且第一个字母为大写形式。则姓的模式可以描述为
        [A-Z][a-zA-Z]{1,24}

例如

	    System.out.println("Smith".matches("[A-Z][a-zA-Z]{1,24}"));
		System.out.println("Smith123".matches("[A-Z][a-zA-Z]{1,24}"));

 注:在这里的空白符是指:数字[1-9],空格“ ”,换行符'\n',制表符'\t'等

        示例5:Java标识符

        示例6:字符串匹配正则表达式

 

6.替换和拆分字符串

 

         1.replaceAll方法替换所有的字符串   replaceFirst方法替换第一个匹配的字符串

System.out.println("Java java java".replaceAll("a\\w","iw"));
System.out.println("Java java java".replaceFirst("a\\w","iw"));

         2 .split(regex,limit)方法中,limit参数确定regex模式匹配多少次,如果limit<=0,就相当于split(regex)。如果limit>0,模式最多匹配limit-1次。

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值