java正则表达式字符解释与基本应用

字符解释
\t制表符
\n换行符
\r回车符
\f换页符
\a报警符
特殊字符解释
$匹配一行的结尾,匹配本身
^匹配一行的开头也表示非,看使用位置
()子表达式的开始结束位置
[]中括号表达式的开始和结束位置
{}用于标记前面子表达式出现的频度
*指定前面子表达式0或多次
+指定前面子表达式一次或多次
?前面子表达式0或1次
.匹配除换行符以外的任何单字符
\转义符
|或的分隔符

()与[]的区别,()代表整个[]代表其中一个,(ab)代表 “ab” ,[ab] 代表a b中一个

预定义字符解释
\d匹配0到9的数字
\D匹配非数字
\s匹配所有的空白字符,空格 制表符 回车符等等
\w匹配所有的单词字符,0-9数字,英文字母和_
\W上一项的非

API

   String pattern = "****"   //正则字符串
   Pattern compile = Pattern.compile(pattern);//编译正则
   String value = "xxxx";  //需要匹配的字符串
   Matcher matcher = compile.matcher(value); //正则与字符串匹配
   matcher.matches() //返回 true or false  匹配上了/没有匹配上
   matcher .replaceAll("字符") //把匹配上的都替换成"字符"
   while (matcher.find()) {
   String s = matcher.group()  //find()一次group()一次,依次取出匹配到的值  
  }

上面到底使用matches()还是find()判断取决于是否是整个字符串匹配, 比如我的正则是匹配整个字符串是否符合正则要求就用matches ,如果是看字符串中是否包含正则表达的字符,就用find

常用的表示:

表达式解释
(a|b)匹配 a或者b
(ac)匹配"ac"
[ac]匹配a或c
[a-c]匹配 a到c中的一个
[0-9]匹配数字0到9中的一个
[^a]匹配不是a
[a-z&&[^def]]匹配a-z中的一个并且不是def中的一个
[a-c[h-i]]匹配a到c h到i中的一个[a-ch-i]
[\u0041-\u0056]匹配中文所有字符
[a-z]{2}a到z中的字符出现两次
[a-z]{1,}a到z中的字符至少出现1次
[a-z]{2,4}a到z中的字符出现2-4次
a*ba出现0到多次最后是b
a+a出现一次或者多次

上面只是一些简单的使用,至于匹配手机号身份证号,邮件等正则百度搜索一下一大片,针对于需求中有自己对字符进行校验的,可以自己写一下.

贪婪模式:
数量表示符默认是贪婪模式,如 “a*” ,a就代表a,而*代表着零次或者多次,会一直匹配下去,直到匹配到不是a为止
勉强模式
以数量标识符最少的匹配,就是跟再数量表示符的最后加一个"?" 如"a*?" a代表a, *代表着零到多次,那么就匹配0次 “a+?” "+"代表着一到多次,所以就匹配一次

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值