正则表达式是一种强大的文本匹配工具,Java的java.util.regex包提供了对正则表达式的支持。本文将详细介绍Java正则表达式的基本用法和实例大全。
Java正则表达式的基本用法和实例大全
正则表达式是一种强大的文本匹配工具,Java的java.util.regex
包提供了对正则表达式的支持。本文将详细介绍Java正则表达式的基本用法和实例大全。
基本用法
常用的正则表达式元字符
正则表达式元字符指代特殊的字符集,用于表示某种类别的字符。以下是常用的正则表达式元字符。
.
:表示任意单个字符。*
:表示前面的字符出现0次或多次。+
:表示前面的字符出现1次或多次。?
:表示前面的字符出现0次或1次。[]
:表示括号内的任意单个字符。|
:表示“或”关系。()
:表示分组。^
:表示匹配行首。$
:表示匹配行尾。\
:表示转义字符。
Java正则表达式类
Java提供了几个类来支持正则表达式的匹配。
Pattern
:正则表达式的编译表示。Matcher
:正则表达式的匹配结果。PatternSyntaxException
:正则表达式语法错误的异常。
正则表达式匹配步骤
使用Java正则表达式进行匹配的步骤包括:
- 编译正则表达式。
- 创建匹配器对象。
- 进行匹配。
以下是示例代码:
String regex = "ab.*cd"; // 正则表达式
String input = "abccccd"; // 待匹配的文本
// 步骤1:编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 步骤2:创建匹配器对象
Matcher matcher = pattern.matcher(input);
// 步骤3:进行匹配
boolean isMatched = matcher.find(); // 判断是否匹配成功
实例大全
以下是Java正则表达式的实例大全。
匹配任意单个字符
.
表示匹配任意单个字符,如下面代码匹配"a"和"b"之间的任意单个字符。
String regex = "a.b";
String input1 = "acb";
String input2 = "a#b";
Pattern pattern = Pattern.compile(regex);
Matcher matcher1 = pattern.matcher(input1);
boolean isMatched1 = matcher1.find(); // true
Matcher matcher2 = pattern.matcher(input2);
boolean isMatched2 = matcher2.find(); // true
匹配多个字符
以下是示例代码:
ab*
:表示匹配"ab"后跟0个或多个"b"。ab+
:表示匹配"ab"后跟1个或多个"b"。ab?
:表示匹配"ab"后跟0个或1个"b"。
String regex1 = "ab*";
String regex2 = "ab+";
String regex3 = "ab?";
String input1 = "ab";
String input2 = "abb";
String input3 = "a";
Pattern pattern1 = Pattern.compile(regex1);
Matcher matcher1 = pattern1.matcher(input1);
boolean isMatched1 = matcher1.find(); // true
Pattern pattern2 = Pattern.compile(regex2);
Matcher matcher2 = pattern2.matcher(input2);
boolean isMatched2 = matcher2.find(); // true
Pattern pattern3 = Pattern.compile(regex3);
Matcher matcher3 = pattern3.matcher(input3);
boolean isMatched3 = matcher3.find(); // true
匹配字符集
使用[]
匹配括号内的任意单个字符,如下面匹配"a"、"b"或者"m"、"n"或者任意数字。
String regex = "[ab]";
String input1 = "a";
String input2 = "b";
String input3 = "mn";
String input4 = "9";
Pattern pattern = Pattern.compile(regex);
Matcher matcher1 = pattern.matcher(input1);
boolean isMatched1 = matcher1.find(); // true
Matcher matcher2 = pattern.matcher(input2);
boolean isMatched2 = matcher2.find(); // true
Matcher matcher3 = pattern.matcher(input3);
boolean isMatched3 = matcher3.find(); // false
Matcher matcher4 = pattern.matcher(input4);
boolean isMatched4 = matcher4.find(); // false
匹配行首和行尾
使用^
匹配行首,使用$
匹配行尾。以下示例代码分别匹配以"a"开头的字符串和以"b"结尾的字符串。
String regex1 = "^a.*";
String regex2 = ".*b$";
String input1 = "abc";
String input2 = "cdab";
String input3 = "debf";
Pattern pattern1 = Pattern.compile(regex1);
Matcher matcher1 = pattern1.matcher(input1);
boolean isMatched1 = matcher1.find(); // true
Matcher matcher2 = pattern1.matcher(input2);
boolean isMatched2 = matcher2.find(); // false
Pattern pattern2 = Pattern.compile(regex2);
Matcher matcher3 = pattern2.matcher(input1);
boolean isMatched3 = matcher3.find(); // false
Matcher matcher4 = pattern2.matcher(input3);
boolean isMatched4 = matcher4.find(); // true
分组匹配
使用圆括号()
将正则表达式分组,通过分组可以方便地对表达式进行复用、优先级调整等操作。以下是示例代码,分别匹配"a"、"aa"和"aaa"等多种数量的"a"。
String regex1 = "(a)+";
String regex2 = "a+";
String regex3 = "(a){1,3}";
String input1 = "a";
String input2 = "aa";
String input3 = "aaa";
Pattern pattern1 = Pattern.compile(regex1);
Matcher matcher1 = pattern1.matcher(input1);
boolean isMatched1 = matcher1.find(); // true
Matcher matcher2 = pattern1.matcher(input2);
boolean isMatched2 = matcher2.find(); // true
Matcher matcher3 = pattern1.matcher(input3);
boolean isMatched3 = matcher3.find(); // true
Pattern pattern2 = Pattern.compile(regex2);
Matcher matcher4 = pattern2.matcher(input1);
boolean isMatched4 = matcher4.find(); // true
Matcher matcher5 = pattern2.matcher(input2);
boolean isMatched5 = matcher5.find(); // true
Matcher matcher6 = pattern2.matcher(input3);
boolean isMatched6 = matcher6.find(); // true
Pattern pattern3 = Pattern.compile(regex3);
Matcher matcher7 = pattern3.matcher(input1);
boolean isMatched7 = matcher7.find(); // true
Matcher matcher8 = pattern3.matcher(input2);
boolean isMatched8 = matcher8.find(); // true
Matcher matcher9 = pattern3.matcher(input3);
boolean isMatched9 = matcher9.find(); // true
沃梦达教程
本文标题为:Java正则表达式的基本用法和实例大全
基础教程推荐
猜你喜欢
- JSP实用教程之简易文件上传组件的实现方法(附源码) 2023-08-01
- Spring深入了解常用配置应用 2023-02-11
- Java通过SSM完成水果商城批发平台流程 2023-01-08
- Spring源码解析后置处理器梳理总结 2023-02-19
- Springboot内嵌tomcat应用原理深入分析 2023-06-01
- SpringBoot利用AOP实现一个日志管理详解 2023-05-19
- springboot 自定义权限标签(tld),在freemarker引用操作 2024-02-28
- 使用@Autowired 注入RedisTemplate报错的问题及解决 2023-04-18
- mybatis中如何用tinyint保存Boolean类型 2023-05-25
- Java 8 中 Function 接口使用方法介绍 2023-01-18