java正则表达式简介说明
下文笔者讲述java中正则表达式的简介说明,如下所示
例
2.量词(表示重复次数)
示例
正则表达式(Regular Expression, 简称 RegEx)简介
在Java代码中,正则表达式
是一种用于字符串匹配、查找和替换的强大工具
Java中通过提供`java.util.regex`包来
支持正则表达式使用
正则表达式核心类
| 类名 | 功能说明 |
| `Pattern` | 表示一个编译后的正则表达式模式 (不能直接实例化,通过 `Pattern.compile()` 创建) |
| `Matcher` | 用于对输入字符串进行匹配操作,通过 `Pattern.matcher(input)` 创建 |
import java.util.regex.*;
public class RegexExample {
public static void main(String[] args) {
String text = "Hello, my email is example@example.com";
String regex = "\\b[\\w.-]+@[\\w.-]+\\.\\w+\\b"; // 匹配邮箱
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("找到邮箱: " + matcher.group());
}
}
}
常用语法符号
1.元字符(特殊含义的字符)| 元字符 | 含义 |
| [\d] | 数字 [0-9] |
| `\D` | 非数字 [^0-9] |
| `\w` | 单词字符 [a-zA-Z0-9_] |
| `\W` | 非单词字符 |
| [\s] | 空白字符(空格、制表符等) |
| `\S` | 非空白字符 |
| [.] | 任意单个字符(除换行符) |
| 量词 | 含义 |
| `*` | 前一个元素出现 0 次或多次 |
| `+` | 前一个元素至少出现 1 次 |
| `?` | 前一个元素出现 0 次或 1 次 |
| `{n}` | 前一个元素恰好出现 n 次 |
| `{n,}` | 前一个元素至少出现 n 次 |
| `{n,m}` | 前一个元素出现 n 到 m 次 |
3.分组与捕获
| 符号 | 含义 |
| `(abc)` | 分组,将 abc 当作整体 |
| `\1`, [\2] | 反向引用第 1、2 组内容 |
| `(?:abc)` | 非捕获分组 |
4.边界匹配符
| 符号 | 含义 |
| `^` | 开始位置 |
| `$` | 结束位置 |
| `\b` | 单词边界 |
| `\B` | 非单词边界 |
1.验证手机号码(中国大陆)
^1[3-9]\d{9}$
2.验证邮箱地址
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
3.提取HTML标签中的内容(简单示例)
<(\w+)>(.*?)</\1>
4.替换敏感词为`***`
String filtered = text.replaceAll("傻.*?子", "***");
常用方法汇总
| 方法 | 描述 |
| `Pattern.compile(regex)` | 编译正则表达式 |
| `matcher.find()` | 查找是否有匹配项 |
| `matcher.matches()` | 整体是否完全匹配 |
| `matcher.group()` | 获取当前匹配的内容 |
| `matcher.group(n)` | 获取第 n 个分组的内容 |
| `String.split(regex)` | 使用正则分割字符串 |
| `String.replaceAll(regex, replacement)` | 替换所有匹配内容 |
正则表达式注意事项
-正则表达式是区分大小写的,
如需忽略大小写可使用 `Pattern.CASE_INSENSITIVE`标志 -多次使用的正则建议缓存 Pattern 对象,
避免重复编译 -正则性能问题:复杂的正则可能导致回溯爆炸(backtracking),
应尽量优化表达式结构
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


