正则表达式

打印 上一主题 下一主题

主题 890|帖子 890|积分 2670


  • 正则表达式是 用某种模式去匹配字符串的一个公式
  • 正则表达式用于 处置处罚字符串和文本
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 替换此字符串匹配给定的正则表达式的第一个子字符串。
  1. // 目标:将JDK1.3和JDK1.4替换为JAVA
  2. String content = "技术的产JDK1.3生以及为JDK1.4对网络编程哈哈随便";
  3. content=content.****replaceAll("JDK1\\.[3|4]", "JAVA");
  4. System.out.println(content);
复制代码

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

必须全部是汉字
  1. public static void main(String[] args) {
  2.     String content = "哈哈";
  3.     String regStr = "^[\u0391-\uffe5]+$";
  4.    
  5.     Pattern pattern = Pattern.compile(regStr);
  6.     Matcher matcher = pattern.matcher(content);
  7.    
  8.     if(matcher.find()){
  9.         System.out.println("满足格式:"+matcher.group(0));
  10.     }else{
  11.         System.out.println("格式错误!");
  12.     }
  13. }
复制代码
URL地址验证
  1. public static void main(String[] args) {
  2.     String content = "https://www.bilibili.com/video/BV1Eq4y1E79W/?p=17&spm_id_from=pageDriver&vd_source=861db91ebfeac0ca1eb519f4fe726bbc";
  3.     content = "www.baidu.com";
  4.    
  5.     String regStr = "^(((ht|f)tps?):\\/\\/)?([^!@#$%^&*?.\\s-]([^!@#$%^&*?.\\s]{0,63}[^!@#$%^&*?.\\s])?\\.)+[a-z]{2,6}\\/?";
  6.     Pattern pattern = Pattern.compile(regStr);
  7.     Matcher matcher = pattern.matcher(content);
  8.    
  9.     if(matcher.find()){
  10.         System.out.println("满足格式:"+matcher.group(0));
  11.     }else{
  12.         System.out.println("格式错误!");
  13.     }
  14. }
复制代码
结巴字符串 去重
  1. String content = "我....我要....学学学学....编程java!";
  2. //先去掉 ....
  3. String regStr = "\\.{4}";
  4. Pattern pattern = Pattern.compile(regStr);
  5. Matcher matcher = pattern.matcher(content);
  6. content=matcher.replaceAll("");
  7. System.out.println(content);
  8. regStr="(.)\\1+"; //分组 反向引用
  9. //pattern = Pattern.compile(regStr);
  10. //matcher = pattern.matcher(content);
  11. //content=matcher.replaceAll("$1"); //外部反向引用
  12. //正则表达式调用链
  13. content=Pattern.compile(regStr).matcher(content).replaceAll("$1");
  14. System.out.println(content);// 我要学编程java!
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

干翻全岛蛙蛙

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表