[2020.4.8]Java中正则表达式的使用和注意事项

目录

1.   .  | 和 \

2.字符集合[]

3.预定义字符集

4.数量词

 5.() 分组和捕获

 6. ^ 和 $

7.正则表达式[\w]+,\w+,[\w+] 三者有何区别:

8.正则需要转义字符:


正则表达式是一串特定的字符,正则表达式有两个作用:
一.判断一个给定的字符串是否符合正则校验,返回一个特定的布尔值(true或false)

1.   .  | 和 \

     1)  . 在正则表达式中表示任意一个字符

  2)| 符号。相当与“或”,可以匹配指定的字符,但是也只能选择其中一项进行匹配,且必须要有一项

         一项可能是多个字符,如(\\d*\\.\\d+|\\d+)代表要么是小数,要么是整数。

           而表达式:t(a|b|c|dd)n 只可以匹配:tantbntcntddn。不可以匹配taantntabcn等。

      3)  \ 在正则表达式当中表示转义字符,比如.在正则表达式当中表示任意一个字符,要是单纯的想要表达一个.的时候,就需

         要用到\转义字符来表示, \在java程序当中\也是被认为特殊字符,也需要进行转义,应该用\\.

后面但凡使用到转义的特殊字符,都要写成\\,如\\d

2.字符集合[]


          [ ] 用来描述一个单一的字符,方括号内部可以定义这个字符的内容,也可以描述一个范围
          [abc] abc中的任意一个字符
          [a-z] 小写字母当中a-z的任意一个单词
          [A-Z] 大写字母当中A-Z中的任意一个单词
          [0-9] 数字0-9中的任意一个数字
          [a-zA-Z0-9] a-zA-z0-9中的任意一个字符
          [a-z&&[^bc]] a-z中除了bc以外的任意一个字母
         

3.预定义字符集

          \d 表示一个数字字符
          \w 表示任意一个数字,字母,_ ,中的一个字符
          \s 表示空白字符  相当于[\t\n]
          \D 表示非数字字符
          \W 表示非数字字母下划线字符
          \S 表示非空白字符      

4.数量词

          x?  表示0个或者1个x    (0或1,yes or no)
          x*  表示0个或多个x       ( *为任意)
          x+  表示1个到任意多个x,相当于大于等于1个x,(>=1,为正数)
          x{n} 表示可以有n个x
          x{n,} 表示可以有n到任意多个x
          x{n,m}表示n到m个x

 5.() 分组和捕获

  它有两个用途。

 1) 可以将一段正则表达式括起来看做一个整体来对这个整体进行匹配,

 2) 另一个用途就是捕获组的用法,可以通过()来做一个或者多个捕获组,根据某个捕获组来匹配给定的字符串当中的

          一部分内容,捕获组是根据(来进行匹配的,发现有一个(就对应一个捕获组,如果想让()里面的正则表达式单纯的

          当做一个整体来进行匹配,在(后面加上“?:”即可,就不会当做一个捕获组来进行处理

    重要!!!: 使用Matcher类的group功能,即可捕获()内的特定字符

  • Matcher 类中group(0) 表示正则表达式中符合条件的字符串。
  • Matcher 类中 group(1) 表示正则表达式中符合条件的字符串中的第一个() 中的字符串。
  • Matcher 类中 group(2) 表示正则表达式中符合条件的字符串中的第二个() 中的字符串。
  • Matcher 类中 group(3) 表示正则表达式中符合条件的字符串中的第三个() 中的字符串。

     详见:

         Pattern类的用法:https://blog.csdn.net/WuGee2015/article/details/48227567

        Matcher类的用法: https://blog.csdn.net/weixin_30457551/article/details/101747122

 6. ^ 和 $

          ^ 代表字符串的开始: 定义了以什么开始,如" ^\\d+ "表示必须以数字开始
          $ 代表字符串的结束: 定义了以什么结束,如 " [a-z]* \\d$ "示必须以数字结束

          可以对一个给定的字符串进行从头到尾的整体匹配

7.正则表达式[\w]+,\w+,[\w+] 三者有何区别:


[\w]+和\w+没有区别,都是匹配数字和字母下划线的多个字符;
[\w+]表示匹配数字、字母、下划线和加号本身字符;

[ ]表示数组而非排列,即不按固定次序位置排列;
在[]内的字符可以任意次序出现。如:

[ABC]+
可以匹配"AAABBBCCC,BBBAAACCC,BACCBACAACBAC,...",不是一定按固定A....B....C...的次序排列。

[\w./-+]+

是匹配\w [0-9a-zA-Z_] 或 . 或 / 或 - 或 + 字符;

在[ ]内特殊字符,表示匹配特殊字符本身,不需要加反斜杠,加了也没错。

在[ ]外特殊字符,表示匹配特殊字符本身,必须要加反斜杠。

在[./-+]内均表示字符本身;

在[ ]+内表示{1,},至少1次或多次;

在[.]内点,不是任意字符的意思,就是匹配点.字符本身,点.可以不需要加反斜杠\.。

8.正则需要转义字符:

解决方法: 对特殊字符加\\转义即可。

1)  '^'  ,'$'       //开始 ^ 和结尾 $

2) '('  ,   ')'  ,    '{'  ,   '}'  ,     '['  ,    ']'  ,      //小中大括号

3)要匹配单引号’,请使用 \'   要匹配双引号 " ,请使用 \"    (\也要写成\\,所以是\\")

4)'*'  ,    '+'   ,    '.'   ,    '?'   ,    '\\'  ,    '|'      //注意:减号'-'不需要转义

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值