javaSE-day03.3-正则表达式

  • 正则表达式基础
/**
 * 正则表达式:
 * 正则表达式是用来描述一个字符串的内容格式,使用它通常用来匹配一个字符串的内容是否符合
 * 格式要求.
 * 基本语法:
 * []:表示一个字符,该字符可以是[]中指定的内容
 * 例如:
 * [abc]:这个字符可以是a或b或c
 * [a-z]:表示任意一个小写字母
 * [a-zA-Z]:表示任意一个字母
 * [a-zA-Z0-9_]:表示任意一个数字字母下划线
 * [^abc]:该字符只要不是a或b或c
 *
 * 预定义字符
 * .:"."表示任意一个字符,没有范围限制  正则里需要转译: \.
 * \d:表示任意一个数字,等同于[0-9]
 * \w:表示任意一个单词字符,等同于[a-zA-Z0-9_]
 * \s:表示任意一个空白字符.
 * \D:表示不是数字
 * \W:不是单词字符
 * \S:不是空白字符
 *
 * 量词:
 * ?:表示前面的内容出现0-1次
 * 例如:
 * [abc]? 可以匹配:a 或 b 或 c 或什么也不写
 *
 * +:表示前面的内容出现1次以上
 * [abc]+ 可以匹配:aaaaaaaaaa...或abcabcbabcbabcbabcbabbabab....
 *        但是不能匹配:什么都不写或abcfdfsbbaqbb34bbwer...
 *
 * *:表示前面的内容出现任意次(0-多次)
 *   匹配内容与+一致,只是可以一次都不写.
 *
 * {n}:表示前面的内容出现n次
 * 例如:
 * [abc]{3} 可以匹配:aaa 或 bbb 或 aab
 *          不能匹配:aaaa或aad
 *
 * {n,m}:表示前面的内容出现最少n次最多m次
 * [abc]{3,5} 可以匹配:aaa 或  abcab 或者 abcc
 *            不能匹配:aaaaaa 或 aabbd
 *
 * {n,}:表示前面的内容出现n次以上(含n次)
 * [abc]{3,} 可以匹配:aaa 或 aaaaa.... 或 abcbabbcbabcbabcba....
 *           不能匹配:aa 或 abbdaw...
 *
 * ()用于分组,是将括号内的内容看做是一个整体
 * 例如:
 * (abc){3} 表示abc整体出现3次. 可以匹配abcabcabc.
 *          不能匹配aaa 或abcabc
 *
 * (abc|def){3}表示abc或def整体出现3次.
 *          可以匹配: abcabcabc 或 defdefdef 或 abcdefabc
 *
 */
  • String支持正则表达式的方法一
  • boolean matches(String regex);-------------------------------使用给定的正则表达式验证当前字符串是否满足格式要求,满足则返回true,否则返回false
String mail = "123456@qq.cn";
String regex = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";
boolean match = mail.matches(regex);
if(match){
   System.out.println("是邮箱");
}else{
   System.out.println("不是邮箱");
}
  • String支持正则表达式的方法二
  • String[] split(String regex);-------------------------------将当前字符串按照满足正则表达式的部分进行拆分,将拆分后的每部分以数组的形式返回
  • split(""); 如果是空串,那么将会对每个字符都进行拆分
public static void main(String[] args) {
     String str = "abc123dfg456qwe";

     //按照数字部分拆分,获取其中每部分字母
     String[] s = str.split("[0-9]+");
     System.out.println(Arrays.toString(s));     // [abc, dfg, qwe]

     //如果连续遇到拆分项,则会拆分出一个空字符串,但是字符串末尾连续遇到则忽略
     String s1 =",,,123,456,,789666";
     s = s1.split("6");           
     System.out.println(Arrays.toString(s));     // [,,,123,45, ,,789]

     String s2 =",,,123,456,,789,,,";           
     s = s2.split(",");                        
     System.out.println(Arrays.toString(s));     // [, , , 123, , 456, , 789]

     String s3 = "123.456.789.023";
     s = s3.split("\\.");                        // .在正则里表示任意字符,要注意转译
     System.out.println(Arrays.toString(s));     // [123, 456, 789, 023]
 }
  • String支持正则表达式的方法三
  • String replaceAll(String regex,String str);-----------根据当前字符串中满足正则表达式的部分替换为给定内容
public static void main(String[] args) {
     String str = "123,456,789";
     String s = str.replaceAll("," , "***");        
     System.out.println(s);                        //123***456***789
}
  • 反和谐:
public static void main(String[] args) {
     String regex = "(nc|登山包)";
     String message = "nc,你个登山包";
     message = message.replaceAll(regex,"***");         
     System.out.println(message);                        //***,你个***
 }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值