当前位置: 首页 > news >正文

Java 正则表达式高级用法

Java 中的正则表达式(Regular Expressions)是强大的文本处理工具,可以用于搜索、匹配、替换和分割字符串。Java 提供了 java.util.regex 包来支持正则表达式的使用。以下是一些 Java 正则表达式的高级用法。

1. 使用 Pattern 和 Matcher

在 Java 中,正则表达式的使用通常涉及到 Pattern 和 Matcher 类。这两个类使得正则表达式的编译和匹配过程更为高效。

import java.util.regex.Pattern;
import java.util.regex.Matcher;String input = "Hello, my email is example@example.com";
String regex = "\\w+@\\w+\\.com";Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);while (matcher.find()) {System.out.println("找到的邮箱: " + matcher.group());
}

2. 断言(Assertions)

正则表达式中的断言用于匹配某些条件但不包括这些条件的字符。常见的断言有:

  • 正向前瞻(Positive Lookahead) (?=...)
  • 负向前瞻(Negative Lookahead) (?!...)
  • 正向后顾(Positive Lookbehind) (?<=...)
  • 负向后顾(Negative Lookbehind) (?<!...)

示例:匹配包含数字的单词,但不包含数字。

String input = "abc1 def2 ghi";
String regex = "\\b(?=\\w*)(?<!\\d)\\w+\\b";Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);while (matcher.find()) {System.out.println("匹配的单词: " + matcher.group());
}

3. 捕获组和命名组

捕获组用于提取匹配到的部分,命名组可以提高可读性。

捕获组
String input = "My name is John and I am 30 years old.";
String regex = "name is (\\w+) and I am (\\d+)";Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);if (matcher.find()) {System.out.println("姓名: " + matcher.group(1)); // JohnSystem.out.println("年龄: " + matcher.group(2)); // 30
}
命名组
String input = "My name is John and I am 30 years old.";
String regex = "name is (?<name>\\w+) and I am (?<age>\\d+)";Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);if (matcher.find()) {System.out.println("姓名: " + matcher.group("name")); // JohnSystem.out.println("年龄: " + matcher.group("age")); // 30
}

4. 替换操作

使用 Matcher 可以进行文本的替换。

String input = "The quick brown fox jumps over the lazy dog.";
String regex = "brown";
String replacement = "black";String result = input.replaceAll(regex, replacement);
System.out.println("替换后的字符串: " + result); // The quick black fox jumps over the lazy dog.

5. 分割字符串

使用正则表达式来分割字符串。

String input = "apple, banana; orange: melon";
String regex = "[,;:]\\s*"; // 逗号、分号、冒号及其后可选空格String[] fruits = input.split(regex);
for (String fruit : fruits) {System.out.println(fruit);
}

6. 使用修饰符

可以使用修饰符来修改正则匹配的行为,例如:

  • Pattern.CASE_INSENSITIVE: 忽略大小写
  • Pattern.MULTILINE: 多行模式

例如:

String input = "Hello World\nhello world";
String regex = "hello";Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
Matcher matcher = pattern.matcher(input);while (matcher.find()) {System.out.println("找到的匹配: " + matcher.group());
}

7. Unicode 支持

Java 正则表达式支持 Unicode 字符,可以用于匹配国际化文本。

String input = "你好,世界";
String regex = "\\p{Han}+"; // 匹配汉字Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);while (matcher.find()) {System.out.println("找到的中文: " + matcher.group());
}

相关文章:

  • 全局数据的处理
  • 设计模式 - 原型模式
  • LTC3130EMSE#TRPBF ADI电子元器件深度解析 物联网/工业传感器首选!
  • RK3568笔记八十五:LVGL播放AVI视频
  • 单服务器部署多个Discuz! X3.5站点并独立Redis配置方案
  • 蜻蜓Q系统的技术演进:从Laravel 6到Laravel 8的升级之路-优雅草卓伊凡
  • NAT基础配置实验
  • Java求职者面试指南:Spring, Spring Boot, Spring MVC, MyBatis技术点深度解析
  • FPGA基础 -- Verilog 概率分布函数
  • 图床项目--展示
  • Linux简单了解以及VM虚拟机的安装使用(后端程序员)
  • 探索算法秘境:量子随机游走算法及其在图论问题中的创新应用
  • Java使用itext pdf生成PDF文档
  • HarmonyOS-ArkTS开发指南:从基础到实战
  • (17)-java+ selenium->自动化测试-元素定位大法之By css上
  • StableDiffusion实战-手机壁纸制作 第一篇:从零基础到生成艺术品的第一步!
  • 前端HTML学习笔记
  • Java 语言的优势场景:企业级应用与新兴领域的首选
  • GRBL_UNO R3编译下载
  • 不会PLC,怎么学上位机?
  • wordpress做一个视频网站吗/百度助手下载
  • 二级域名网站建设/自己建网站
  • 北京免费做网站/seo上海推广公司
  • 旅游网官网首页/淘宝seo搜索引擎原理
  • asp网站怎么做301/网站推广策划书范文
  • 网站制作有限公司/百度秒收录