博客
关于我
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/

    你可能感兴趣的文章
    Quartz入门看这一篇文章就够了
    查看>>
    POI解析Excel【poi的坑——空行处理】
    查看>>
    POI:POI+JXL实现xls文件添加水印
    查看>>
    POI:POI实现docx文件添加水印
    查看>>
    POJ 1006
    查看>>
    Quartz中时间表达式的设置-----corn表达式
    查看>>
    poj 1035
    查看>>
    POJ 1061 青蛙的约会 (扩展欧几里得)
    查看>>
    Quartz2.2.1简单使用
    查看>>
    POJ 1080 Human Gene Functions(DP:LCS)
    查看>>
    Quant 开源项目教程
    查看>>
    POJ 1088 滑雪
    查看>>
    POJ 1095 Trees Made to Order
    查看>>
    POJ 1113 Wall(计算几何--凸包的周长)
    查看>>
    poj 1125Stockbroker Grapevine(最短路)
    查看>>
    Qualitor processVariavel.php 未授权命令注入漏洞复现(CVE-2023-47253)
    查看>>
    poj 1151 (未完成) 扫描线 线段树 离散化
    查看>>
    POJ 1151 / HDU 1542 Atlantis 线段树求矩形面积并
    查看>>
    poj 1163 数塔
    查看>>
    POJ 1177 Picture(线段树:扫描线求轮廓周长)
    查看>>