java 正则使用笔记

正则表达式:

 正则表达式的作用:约束字符串的格式

 

字符集:

 []   :方括号表示其中的内容任选其一,代表一个字符

        [1234] 1,2,3,4任选其一

 ()   :表示一组内容,圆括号中可以使用"|"符号

 

 |   :逻辑或关系

        

 ^   :非,除了

     [^12] 除了1或2的其他字符

     

 -   :范围,范围应从小到大  

     [0-9]表示此字符只能是数字

     [a-f]表示此字符只能是a,b,c,d,e,f之一

     [0-6a-fA-F] 0123456abcdefABCDEF

 

 {n,m}  :修饰前一个字符,表示其出现n-m次.n应小于m

 {n}   :修饰前一个字符,表示其出现n次

 {n,}  :修饰前一个字符,表示其出现n次以上   

     0[xX][0-9a-fA-F]{1,8}

     0x7fffffff  int最大值

 

 预定义字符集:

 \d   :表示一个数字.与[0-9]意思一致

 .   :表示任意字符

 \w   :表示单词字符.[0-9a-zA-Z_] 包含个下划线

 \s   :表示空白: \t \n \r \b \p

 

 \D   :表示非数字

 \W   :非单词字符

 \S   :非空白

 

 ?   :修饰前一个字符出现0-1次.  {0,1}

 +   :修饰前一个字符出现1次以上.{1,}

 *   :修饰前一个字符出现任意次. {0,}、

 "^$" ^表示以什么开头    $表示以什么结尾

.  |  都是特殊字符  java中使用时需要转义   

|  可以使用在()  也可以使用在[]



 

 

=======================================================

String中对正则表达式的支持

 String的API中有几个方法支持正则表达式

 matches()  匹配正则表达式

 slipt()         根据正则表达式拆分字符串

 replaceAll() 将满足正则表达式的部分已给定字符串替换


matches(String regex) 完全匹配正则返回true 部分匹配或不匹配返回false

split(String regex)返回的是String数组,可以通过将数组转换为字符串来显示

replaceAll(String regex,String text),用text文本来替换匹配的字符  返回String



下面介绍java pattern类使用正则

1.最简单的模式匹配判断

    Pattern.matches(regex, str),它等同于Pattern.compile(regex).matcher(str).matches();

2.按模式分割字符串

    Pattern.compile(regex).split(str),它等同于str.split(regex)


创建 :   Pattern pattern=Patter.compile(String regex);

创建匹配器   Matcher matcher=pattern.matcher(String str or StringBuffer sb);

pattern 方法:reset()用来重置匹配字符起始位置,作用后面讲。

matcher方法:find(int index)部分匹配---只要字符串中存在匹配的字符就返回true,通常如此while(matcher.find()){}使用,第二次匹配会接着第一次匹配之后进行匹配,例如   aaa@bbb@cc@.   "\\w" 第一次匹配到第一个@ 当再次运行find()方法时会从b开始匹配,第三次会从c开始匹配,直至匹配完整个字符串, 当这里调用第一次find()时,再调用pattern.reset()那么第二次会从头开始匹配即从a开始匹配.index参数表示从字符串的指定索引开始匹配,不写即从0开始匹配

       matches()完全匹配只有整个字符串都符合正则表达式时才会返回true

start()第一个匹配的位置  这里既是a   返回0

end()返回最后一个匹配的位置  这里既是第一个@ 返回3

group(int index)存放着匹配的字符串与find()一起使用

如while(matcher.find()){system.out.print(matcher.group)  },,,,,index参数  需要配合groupcount和正则表达式的符号()一起使用

String regex=“(\\w*)(\\w*)”; 其中一个()即为一个模式  matcher.groupcount()即返回模式的个数,索引从1开始

index参数为0是显示第一次匹配的全部符合的字符串,当为1<n<=matcher.groupcount()即返回的是每次匹配的指定的模式的匹配的字符串

正则  贪婪模式和懒惰模式:

贪婪模式:a111111ba22222222b    "a\\.*b" 返回的是a111111ba22222222b 即返回最长的

懒惰模式:  “a\\.*?b”需要加个?表明为懒惰模式  ,返回的是a11111111b     a2222222222b 两次

+ ?* {0,} 默认的都是贪婪模式 








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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值