Java正则表达式的基本用法和实例大全

正则表达式是一种强大的文本匹配工具,Java的java.util.regex包提供了对正则表达式的支持。本文将详细介绍Java正则表达式的基本用法和实例大全。

Java正则表达式的基本用法和实例大全

正则表达式是一种强大的文本匹配工具,Java的java.util.regex包提供了对正则表达式的支持。本文将详细介绍Java正则表达式的基本用法和实例大全。

基本用法

常用的正则表达式元字符

正则表达式元字符指代特殊的字符集,用于表示某种类别的字符。以下是常用的正则表达式元字符。

  • .:表示任意单个字符。
  • *:表示前面的字符出现0次或多次。
  • +:表示前面的字符出现1次或多次。
  • ?:表示前面的字符出现0次或1次。
  • []:表示括号内的任意单个字符。
  • |:表示“或”关系。
  • ():表示分组。
  • ^:表示匹配行首。
  • $:表示匹配行尾。
  • \:表示转义字符。

Java正则表达式类

Java提供了几个类来支持正则表达式的匹配。

  • Pattern:正则表达式的编译表示。
  • Matcher:正则表达式的匹配结果。
  • PatternSyntaxException:正则表达式语法错误的异常。

正则表达式匹配步骤

使用Java正则表达式进行匹配的步骤包括:

  1. 编译正则表达式。
  2. 创建匹配器对象。
  3. 进行匹配。

以下是示例代码:

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

基础教程推荐