博客
关于我
Java 正则表达式
阅读量:289 次
发布时间:2019-03-01

本文共 1987 字,大约阅读时间需要 6 分钟。

正则表达式入门与应用

正则表达式(Regular Expression,简称RegEx)是一种强大的工具,用于描述字符串的模式。它可以帮助我们匹配特定的文本、验证数据格式、或提取信息。以下是关于正则表达式在Java中的应用及相关知识的详细解析。

正则表达式的基础

正则表达式语法由多个特殊字符组成,每个字符都有特定的含义:

  • ^:匹配输入字符串的开始位置。
  • $:匹配输入字符串的结尾位置。
  • *** **:前面的字符或子表达式可以出现零次或多次。
  • **+ **:前面的字符或子表达式可以出现一次或多次。
  • **? **:前面的字符或子表达式可以出现零次或一次。
  • {n}:前面的字符或子表达式可以出现恰好n次。
  • {n,}:前面的字符或子表达式可以出现至少n次。
  • []:表示字符集合,匹配其中任意一个字符。
  • ****:用于转义特殊字符,例如\d表示数字字符。

常用的正则表达式

根据不同需求,正则表达式可以用于验证数字、字符、日期、文件名等。以下是一些常见的正则表达式示例:

  • 数字表达式

    • 匹配任意数字:^\d*$
    • 匹配n位数字:^\d{n}$
    • 匹配至少n位数字:^\d{n,}$
  • 字符表达式

    • 匹配汉字:[\u4e00-\u9fa5]
    • 匹配英文和数字:[A-Za-z0-9]+
  • 日期格式

    • 匹配日期:^\d{4}-\d{1,2}-\d{1,2}$
  • 特殊需求表达式

    • 匹配Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)$
    • 匹配域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
  • 正则表达式的应用

  • 字符串匹配

    • 使用String.matches()方法:input.matches(regex)
    • 使用Pattern.matches()方法:Pattern.matches(regex, input)
    • 使用Matcher.matches()方法:创建PatternMatcher对象,调用matches()方法。
  • 部分匹配

    • 使用Matcher.find()方法:尝试查找与模式匹配的输入序列的下一个子序列。
  • 提取组合

    • 使用Matcher.group()方法:提取匹配到的结果,包括整个匹配和各个括号组合。
  • 实际案例

    案例1:文件过滤

    import java.io.File;import java.io.FileFilter;public class test01 {    public static void main(String[] args) {        File file = new File("E:\\011");        File[] files = file.listFiles(new FileFilter() {            @Override            public boolean accept(File pathname) {                return pathname.getName().endsWith(".txt");            }        });        for (File file1 : files) {            System.out.println(file1.getName());        }    }}

    案例2:包含特定字符

    public class test02 {    public static void main(String[] args) {        File file = new File("E:\\011");        File[] files = file.listFiles(new FileFilter() {            @Override            public boolean accept(File pathname) {                return pathname.getName().matches(".*world+.*");            }        });        for (File file1 : files) {            System.out.println(file1.getName());        }    }}

    总结

    正则表达式在Java中的应用是多样的,涵盖了字符串匹配、过滤、数据验证等多个方面。通过合理设计正则表达式,可以有效提升代码的简洁性和灵活性。建议在实际开发中,结合具体需求,选择合适的正则表达式,以确保最佳匹配效果。

    转载地址:http://bxmo.baihongyu.com/

    你可能感兴趣的文章
    mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
    查看>>
    MySQL 8.0 恢复孤立文件每表ibd文件
    查看>>
    MySQL 8.0开始Group by不再排序
    查看>>
    mysql ansi nulls_SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思
    查看>>
    multi swiper bug solution
    查看>>
    MySQL Binlog 日志监听与 Spring 集成实战
    查看>>
    MySQL binlog三种模式
    查看>>
    multi-angle cosine and sines
    查看>>
    Mysql Can't connect to MySQL server
    查看>>
    mysql case when 乱码_Mysql CASE WHEN 用法
    查看>>
    Multicast1
    查看>>
    MySQL Cluster 7.0.36 发布
    查看>>
    Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
    查看>>
    MySQL Cluster与MGR集群实战
    查看>>
    multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
    查看>>
    mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
    查看>>
    Multiple websites on single instance of IIS
    查看>>
    mysql CONCAT()函数拼接有NULL
    查看>>
    multiprocessing.Manager 嵌套共享对象不适用于队列
    查看>>
    multiprocessing.pool.map 和带有两个参数的函数
    查看>>