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正则表达式的基本用法和实例大全 - Python技术站