正则表达式
  ZTo294hNoDcA 6天前 39 0
  • 正则表达式是 用某种模式去匹配字符串的一个公式
  • 正则表达式用于 处理字符串和文本

Java中的正则表达式

  • 在Java正则表达式中,需要 使用双斜杠 \ 表示转义符
  • 在Java正则表达式中, 默认区分大小写
  • 在Java正则表达式中,默认是贪婪匹配(最大匹配),会匹配最多的
    非贪婪匹配:在限定符后面加上?号

正则表达式 - API

  • Pattern类

    matches( ):整体匹配。判断整个字符串是否满足格式,返回true或false

  • Matcher

  • PatternSyntaxException


正则表达式 - 语法

转义符

  • 使用正则表达式匹配特殊的字符时,需要使用转义字符
  • 在Java的正则表达式中,使用使用双斜杠 \代表转义字符

预定义字符

边界定位符

限定符

修饰符

用来修改表达式的搜索结果. 这些标志可以任意的组合使用, 它也是整个正则表达式的一部分

  • i:忽略大小写
  • g:全局搜索
  • m:多行

分组-捕获-反向引用

  • 捕获

  • 非捕获


String类的四个正则表达式方法

  • 切割

    String[ ] split(String regex):根据给定正则表达式的匹配拆分此字符串。
    String[ ] split(String regex, int limit):根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中。

  • 替换

    String replaceAll(String regex, String replacement): 使 用 给 定 的replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
    String replaceFirst(String regex, String replacement): 使 用 给 定 的replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。

// 目标:将JDK1.3和JDK1.4替换为JAVA
String content = "技术的产JDK1.3生以及为JDK1.4对网络编程哈哈随便";
content=content.****replaceAll("JDK1\\.[3|4]", "JAVA");
System.out.println(content);
  • 匹配正则表达式

    boolean matches(String regex):字符串是否匹配给定的正则表达式


应用实例

必须全部是汉字

public static void main(String[] args) {
    String content = "哈哈";
    String regStr = "^[\u0391-\uffe5]+$";
    
    Pattern pattern = Pattern.compile(regStr);
    Matcher matcher = pattern.matcher(content);
    
    if(matcher.find()){
        System.out.println("满足格式:"+matcher.group(0));
    }else{
        System.out.println("格式错误!");
    }
}

URL地址验证

public static void main(String[] args) {
    String content = "https://www.bilibili.com/video/BV1Eq4y1E79W/?p=17&spm_id_from=pageDriver&vd_source=861db91ebfeac0ca1eb519f4fe726bbc";
    content = "www.baidu.com";
    
    String regStr = "^(((ht|f)tps?):\\/\\/)?([^!@#$%^&*?.\\s-]([^!@#$%^&*?.\\s]{0,63}[^!@#$%^&*?.\\s])?\\.)+[a-z]{2,6}\\/?";
    Pattern pattern = Pattern.compile(regStr);
    Matcher matcher = pattern.matcher(content);
    
    if(matcher.find()){
        System.out.println("满足格式:"+matcher.group(0));
    }else{
        System.out.println("格式错误!");
    }
}

结巴字符串 去重

String content = "我....我要....学学学学....编程java!";

//先去掉 ....
String regStr = "\\.{4}";
Pattern pattern = Pattern.compile(regStr);
Matcher matcher = pattern.matcher(content);
content=matcher.replaceAll("");
System.out.println(content);

regStr="(.)\\1+"; //分组 反向引用
//pattern = Pattern.compile(regStr);
//matcher = pattern.matcher(content);
//content=matcher.replaceAll("$1"); //外部反向引用

//正则表达式调用链
content=Pattern.compile(regStr).matcher(content).replaceAll("$1");
System.out.println(content);// 我要学编程java!

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: 浅谈WebSocket 下一篇: JAVA入门程序
  1. 分享:
最后一次编辑于 6天前 0

暂无评论

推荐阅读
  FHUfYd9S4EP5   2天前   19   0   0 Java
  sSh3rBaiME5f   3天前   22   0   0 Java
  qCe06rFCa8NK   2天前   15   0   0 Java
  ZTo294hNoDcA   2天前   19   0   0 Java
  FHUfYd9S4EP5   2天前   16   0   0 Java
  QGiRIwDaZAe8   3天前   18   0   0 Java