一,基础概念
正则表达式(regex) 用于匹配字符串中的特定模式,java 中通过 java.util.regex 包实现,核心类为:
- pattern:编译后的正则表达式对象。
- matcher:用于在输入字符串中查找匹配项。
二,如何快速入门
1,编译正则表达式
pattern pattern = pattern.compile("你的正则表达式");
2,创建匹配器
matcher matcher = pattern.matcher("要匹配的字符串");
3,执行匹配
常用方法:
- find():查找下一个匹配项。
- matches():检查整个字符串是否匹配。
- group():获取匹配的子字符串。
三,核心语法
1,基本元字符
| 元字符 | 含义 | 示例 |
|---|---|---|
| . | 匹配任意单个字符(换行除外) | “a.c” 匹配 “abc”, “a2c” |
| ^ | 匹配字符串开头 | “^hello” 匹配 “hello…” |
| $ | 匹配字符串结尾 | “world$” 匹配 “…world” |
| * | 匹配前面的元素 0次或多次 | “a*” 匹配 “”, “a”, “aaa” |
| + | 匹配前面的元素 1次或多次 | “a+” 匹配 “a”, “aaa” |
| ? | 匹配前面的元素 0次或1次 | “a?” 匹配 “”, “a” |
| [ ] | 匹配字符集中的任意一个字符 | [abc] 匹配 “a”, “b”, “c” |
| | | 逻辑或(匹配左侧或右侧) | “cat|dog” 匹配 “cat"或"dog” |
2,量词与分组
- 量词:{n}(n次)、{n,}(至少n次)、{n,m}(n到m次) 示例:“a{2}” 匹配 “aa”。
- 分组:(…) 将子表达式分组,可用于捕获或引用。 示例:“(\d{3})-(\d{4})” 捕获电话号码的区号和号码。
3,预定义字符类
| 字符类 | 含义 |
|---|---|
| \d | 匹配数字(0-9) |
| \d | 匹配非数字 |
| \w | 匹配字母、数字、下划线 |
| \w | 匹配非单词字符 |
| \s | 匹配空白字符(空格、换行) |
| \s | 匹配非空白字符 |
四、场景应用
1,验证邮箱格式
string email = "user@example.com";
pattern pattern = pattern.compile("^[a-za-z0-9._%+-]+@[a-za-z0-9.-]+\\.[a-za-z]{2,}$");
matcher matcher = pattern.matcher(email);
boolean isvalid = matcher.matches(); // true 或 false
2,提取电话号码
string text = "电话:138-1234-5678";
pattern pattern = pattern.compile("\\d{3}-\\d{4}-\\d{4}");
matcher matcher = pattern.matcher(text);
if (matcher.find()) {
system.out.println(matcher.group()); // 输出 "138-1234-5678"
}
3,替换字符串
string text = "价格:$99.99";
pattern pattern = pattern.compile("\\$\\d+\\.\\d{2}");
matcher matcher = pattern.matcher(text);
string replaced = matcher.replaceall("¥100.00"); // 替换为 ¥100.00
4, 分割字符串
string csv = "apple,banana,cherry";
string[] fruits = csv.split(","); // 输出 ["apple", "banana", "cherry"]
五、正则使用tips
1,转义字符
在 java 字符串中,反斜杠 \ 需要转义为 \。
示例:正则表达式 \d 在代码中写为 “\d”。
2,性能优化
频繁使用正则时,建议预编译 pattern 对象:
private static final pattern email_pattern = pattern.compile("...");
3,边界匹配
使用 ^ 和 $ 确保匹配整个字符串,而非子串:
例如"^start" 匹配以 “start” 开头的字符串,“end$” 匹配以 “end” 结尾的字符串。
4,分组捕获
使用 () 分组,通过 group(int) 获取子匹配结果:
pattern pattern = pattern.compile("(\\d{3})-(\\d{4})");
matcher matcher = pattern.matcher("123-4567");
system.out.println(matcher.group(1)); // 输出 "123"
总结
到此这篇关于java中正则表达式的快速入门与使用实例的文章就介绍到这了,更多相关java正则表达式使用内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论