JAVA中的正则表达式初步学习

JAVA中的正则表达式学习

前言:
经常会需要编写代码来验证用户输人,比如验证输入是否是一个数字,是否是一个全部小写的字符串,或者社会安全号。如何编写这种类型的代码呢?一个简单而有效的做法是使用正则表达式来完成这个任务。
**正则表达式 ( regular expression,简写为regex)**是一个字符串,用来描述匹配一个字符串集合的模式。对于字符串处理来说,正则表达式是一个强大的工具。可以使用正则表达式来匹配、替换和拆分字符串。

正则表达式的关键————正则表达式

正则表达式用语句“ String”.matches(“正则表达式”)

System.out.print("java is fun".matches("java.*"));

运行结果为:

true

这条语句的理解就是判断前面的字符串是否以“java”开头,后面的“.*”表示java后面可以跟任意个字符串。

在这里插入图片描述
在这里插入图片描述
注意:java中反斜杠\需要用\\来表示

可以用括号将模式分组
演示:

System.out.print("ten".matches("t(en|im)"));
\\true
System.out.print("abab".matches("(ab){2}"));
\\true

实例演示

System.out.print("e".matches("[ae|cd]"));
\\true
System.out.print("w".matches("[xyw]"));
\\true
System.out.print("xy".matches("[xyw]{2}"));
\\true
前面的[xyz]表示字符串中字符的范围,{2}代表匹配范围为前两位
System.out.print("xyqqqqqq".matches("[xyw]{2}"));
\\false
因为“xyqqqqqqq”只有前两位匹配了但后面的多位都不匹配
System.out.print("xyqqqqqq".matches("[xyw]{2}.*"));
\\true
加上“.*”后只判断{n}中前n位匹配即可

正则表达式的实际应用

1.社会安全号码
社会安全号码的模式是xxx-xx-xxx,其中x是一位数字。则社会安全号码的正则表达式为[\d]{3}-[\d]{2}-[\d]{3}
例如:

System.out.print("123-45-678".matches("[\\d]{3}-[\\d]{2}-[\\d]{3}"));
\\true
System.out.print("1234-45-678".matches("[\\d]{3}-[\\d]{2}-[\\d]{3}"));
\\false

2.判断以偶数结尾

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


电话号码的模式是(xxx)xxx-xxxx,x表示数字,并且第一位不能是0,则电话号码的正则表达式可以表示为
\([1-9][\d]{2}\)[\d]{3}-[\d]{4}
**注意:**括号(和)在正则表达式是特殊字符,用于模式分组。为了在正则表达式表示字面值(和),需要用\(和\)

System.out.print("(091)123-1234".matches(" \\([1-9][\\d]{2}\\)[\\d]{3}-[\\d]{4}"));
\\false
 \\([1-9][\\d]{2}\\)[\\d]{3}-[\\d]{4}
 \\true

正则表达式在字符串替换拆分中的应用

String类不仅包含matches方法,也包含repalceAll、replaceFirst和split方法,用于替换和拆分字符串。

replaceAll方法替换所有的字符串,

System.out.print("Java java java".replaceAll("v\\w","iv"));
\\Jaiv jaiv jaiv

replaceFirst方法替换第一个匹配的字符串

System.out.print("Java java java".replaceFirst("v\\w","iv"));
\\Jaiv java java

.split(regex,limit),limit参数决匹配regex模式多少次,如果limit<=0,就相当于split(regex)
在这里插入图片描述
以上便是我此次学习Java正则表达式的收获

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值