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),
应尽量优化表达式结构
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。