Java学习——正则表达式

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
在Java开发中,正则表达式(Regular Expression)是处理文本匹配、验证和提取的核心工具,主要通过java.util.regex包实现。以下是系统性剖析:
<hr> ​正则表达式的作用​


  • ​文本验证​
         
    • 验证格式规范:邮箱、手机号、身份证号等(如1[3-9]\d{9}匹配手机号)  
      
  • ​文本搜索与提取​
         
    • 日志日志文档中提取特定模式的数据(如提取URL或日期)  
      
  • ​文本替换与洗濯​
         
    • 批量替换敏感词、格式化文本(如replaceAll("\\s+", " ")合并多余空格)  
      
  • ​字符串分割​
         
    • 按复杂规则切分字符串(如split("\\|")按竖线分割)  

<hr> ⚙️ ​​Java中常用正则表达式​

    ​​类别​​   ​​示例​​   ​​说明​​         ​​底子匹配​​   "a.b"   匹配"a"后接任意字符+"b"       ​​数字匹配​​   "\\d+"   匹配连续数字(如"123")       ​​字符集​​   "[aeiou]"   匹配任意元音字母       ​​边界控制​​   "^Java"   匹配以"Java"开头的字符串       ​​分组捕获​​   "(\\d{3})-(\\d{4})"   提取区号和号码(如"020-1234")      特殊字符需转义:如.需写为\\.,\需写为\\\\
  <hr> ️ ​​Java正则表达式利用步骤​


  • ​编译正则模式​
    利用Pattern.compile()将字符串编译为可重用对象:
    1. Pattern pattern = Pattern.compile("\\d{3}");  // 匹配3位数字
    复制代码

  • ​创建匹配器​
    绑定目标文本与模式:
    1. Matcher matcher = pattern.matcher("ID: 123, Code: 456");
    复制代码

  • ​执行匹配操作​
         
    • matcher.matches():全文本匹配   
    • matcher.find():迭代查找子串   
    • matcher.group():获取匹配结果  
    1. while (matcher.find()) {
    2.     System.out.println("找到数字: " + matcher.group()); // 输出123, 456
    3. }
    复制代码

<hr> ​匹配Email的正则表达式及代码​

尺度表达式(兼容多数格式):

  1. ^[\w+.-]+@[\w.-]+\.[a-zA-Z]{2,}$
复制代码


  • ​分解说明​​:
         
    • ^[\w+.-]+:本地部分(允许字母、数字、.、-、_)   
    • @:分隔符   
    • [\w.-]+:域名(如gmail、yahoo)   
    • \.[a-zA-Z]{2,}:顶级域名(如.com、.org,至少2位)  

Java完整示例:

  1. import java.util.regex.*;
  2. public class EmailValidator {
  3.     public static void main(String[] args) {
  4.         String emailRegex = "^[\\w+.-]+@[\\w.-]+\\.[a-zA-Z]{2,}$";
  5.         String email = "user.name+2024@example.com";
  6.         
  7.         Pattern pattern = Pattern.compile(emailRegex);
  8.         Matcher matcher = pattern.matcher(email);
  9.         
  10.         if (matcher.matches()) {
  11.             System.out.println("✅ 邮箱有效");
  12.         } else {
  13.             System.out.println("❌ 邮箱无效");
  14.         }
  15.     }
  16. }
复制代码
  ⚠️ ​​注意​​:RFC尺度复杂,此表达式覆盖常见格式但非100%完整。
  <hr> ​进阶技巧​


  • ​预编译优化​
    多次利用的正则表达式应预编译Pattern对象提拔性能
  • ​非捕获分组​
    用(?:...)替代(...)避免存储分组,减少开销。
  • ​懒惰匹配​
    在量词后加?(如.*?)避免过度匹配。
<hr> ​总结​

正则表达式在Java中通过 ​​Pattern编译​​、​​Matcher操作​​实现高效文本处理,适用于验证(如邮箱)、提取(如电话号码)、替换(如数据脱敏)等场景。把握核心语法(如

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5

GMT+8, 2025-6-19 18:22 , Processed in 0.057596 second(s), 25 queries 手机版|qidao123.com技术社区-IT企服评测▪应用市场 ( 浙ICP备20004199 )

快速回复 返回顶部 返回列表