JavaSE基础-----[正则表达式的介绍及基本用法]


正则表达式


正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

正则表达式也就是一种模式匹配的语法;由特定的字符组成;每种字符匹配一种规则;使用这些字符进行匹配某个字符串;判断字符串是否满足于需求.


应用场景


在实际应用中;从各种终端向程序中输入数据时,需要对输入的数据格式进行验证;


几个基本字符的使用


首先找到String类中的matches( )判断方法;利用这个方法来进行正则表达式的学习;

在这里插入图片描述

即方法public boolean matches(String regex);

由设定的正则表达式,对字符串中的内容进行判断,返回一个布尔值.

 //写个字符串进行演示;
String s="12345abc";
//public boolean matches(String regex)
//由设定的正则表达式,对字符串中的内容进行判断,返回一个布尔值
//例如这个 \d 是匹配数字字符的表达式,
boolean a=s.matches("\\d");
//由于s中包含abc,返回false
System.out.println(a);//false

  • \

解释:将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,"\n"匹配\n。"\n"匹配换行符。序列"\“匹配”“而”(“则匹配”("。即相当于多种编程语言中都有的"转义字符"的概念。

  • ^

匹配输入字行首。如果设置了RegExp对象的Multiline属性,^也匹配"\n"或"\r"之后的位置。

  • $

匹配输入行尾。如果设置了RegExp对象的Multiline属性,$也匹配"\n"或"\r"之前的位置。

  • .

匹配除"\n"和"\r"之外的任何单个字符。要匹配包括"\n"和"\r"在内的任何字符,可以使用像"[\s\S]"的模式。


  • \ d
    匹配数字字符;[0-9]之间的.

这里有几个字符是进行匹配规定写的某个匹配字符出现几次的;
X表示进行的字符匹配;

在这里插入图片描述

  • 问号? 允许出现一次或者一次都没有
//? 允许出现一次或者一次都没有
String s1="1234";
boolean a1=s1.matches("\\d?");
//这里出现了4次数字字符,则false
System.out.println(a1);//false
  • 星号* 允许出现零次或者多次
//* 允许出现零次或者多次
String s2="";
boolean a2=s2.matches("\\d*");
//这里出现了0次数字字符,则true
System.out.println(a2);//true
  • 加号 + 允许出现一次或者多次
//+ 允许出现一次或者多次
String s3="";
boolean a3=s3.matches("\\d+");
//这里出现了零次数字字符,则false
System.out.println(a3);//false
  • {n} 恰好出现n次
//{n}恰好出现n次
String s4="12341";
boolean a4=s4.matches("\\d{5}");
//这里恰好出现了5次数字字符,则true
System.out.println(a4);//true
  • {n,} 至少出现n次
 //{n,} 至少出现n次
String s5="1234";
boolean a5=s5.matches("\\d{6,}");
//这里出现了4次数字字符,则false
System.out.println(a5);//false
  • {n,m} 至少出现n次,但是不能超过m次
//{n,m} 至少出现n次,但是不能超过m次
String s6="12345678";
boolean a6=s6.matches("\\d{6,8}");
//这里出现了8次数字字符,则true
System.out.println(a6);//true

数字字符也可用区间进行匹配;
例如:

  • [0-5] 表示仅能输入0-5的数字
//[0-5] 表示仅能输入0-5的数字
String s7="00055655";
boolean a7=s7.matches("[0-5]*");
//这里出现了数字6;则不匹配
System.out.println(a7);//false
  • [527] 表示仅能输入2,5,7这三个数字;
//[527] 表示仅能输入2,5,7这三个数字;
String s8="2225572";
boolean a8=s8.matches("[527]*");
System.out.println(a8);//true
  • [^527] 表示不允许输入这几个数字;
//[^527]  表示不允许输入这几个数字;
String s9="asdfg014";
boolean a9=s9.matches("[^527]*");
//这里没有包含2,5,7三个数字,则匹配;
System.out.println(a9);//true


非数字字符的匹配

  • \D 表示非数字字符;等价于[^0-9]。grep要加上-P,perl正则支持


空白和非空白字符的匹配

在这里插入图片描述

  • \s

匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。

  • \S

匹配任何可见字符。等价于[^ \f\n\r\t\v]。

空白字符分类那几个;

  • \t

匹配一个制表符。等价于\x09和\cI。

  • \f

匹配一个换页符。等价于\x0c和\cL。

  • \n

匹配一个换行符。等价于\x0a和\cJ。

  • \r

匹配一个回车符。等价于\x0d和\cM。

  • \v

匹配一个垂直制表符。等价于\x0b和\cK。



单词字符和非单词字符

  • \w

匹配包括下划线的任何单词字符。类似但不等价于"[A-Za-z0-9_]",这里的"单词"字符使用Unicode字符集。

  • \W

匹配任何非单词字符。等价于"[^A-Za-z0-9_]"。

在这里插入图片描述



常用运算符与表达式:

  • ^ 开始

  • ( ) 域段

  • 包含,默认是一个字符长度

  • [^] 不包含,默认是一个字符长度

  • {n,m} 匹配长度

  • . 任何单个字符

  • | 或

  • \ 转义(例如" \ \ d")

  • $ 结尾

  • [A-Z] 26个大写字母

  • [a-z] 26个小写字母

  • 0-9] 0至9数字

  • [A-Za-z0-9] 26个大写字母、26个小写字母和0至9数字

  • , 分割



例子:

String s7="1563337";
        //控制允许写入7位数字;
        boolean res7=s7.matches("[1][567][678]\\d{4}");
        System.out.println(res7);
        
//输入邮箱的格式判断;
       String s10="2x56Qw123@163.cn";
       //由于"."本身可以匹配到任何字符;使用\\.对"."符号进行转义;
       boolean res10=s10.matches("\\w{2,10}@(163|qq|outlook)\\.(com|cn)");
       System.out.println(res10);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小智RE0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值