目 录CONTENT

文章目录

Java正则表达式详解与示例

在等晚風吹
2024-01-16 / 0 评论 / 0 点赞 / 17 阅读 / 5095 字 / 正在检测是否收录...

Java正则表达式详解与示例

正则表达式是一种强大且灵活的文本匹配工具,它在Java编程中有着广泛的应用。正则表达式提供了一种描述字符模式的语法,允许你在文本中查找、匹配、替换符合特定规则的字符串。在本文中,我们将深入探讨Java中正则表达式的基本概念、语法以及实际应用,并通过详细的示例演示其用法。

1. 正则表达式基础

1.1 字符类

字符类用于定义一个字符集,可以匹配其中任意一个字符。例如,[abc] 表示匹配字符 'a'、'b' 或 'c'。

String pattern = "[abc]";
String text = "apple";
boolean isMatch = text.matches(pattern);
System.out.println(isMatch);  // 输出:true

1.2 范围

通过指定范围,可以简化字符类的表示。例如,[a-z] 表示匹配所有小写字母。

String pattern = "[a-z]";
String text = "hello";
boolean isMatch = text.matches(pattern);
System.out.println(isMatch);  // 输出:true

1.3 预定义字符类

Java正则表达式提供了一些预定义的字符类,如\d 表示任意数字,\w 表示任意字母、数字或下划线。

String pattern = "\\d\\w";
String text = "1a";
boolean isMatch = text.matches(pattern);
System.out.println(isMatch);  // 输出:true

2. 量词

量词用于指定一个模式的重复次数。

2.1 基本量词

  • *:零次或多次
  • +:一次或多次
  • ?:零次或一次
String pattern = "\\d+";
String text = "12345";
boolean isMatch = text.matches(pattern);
System.out.println(isMatch);  // 输出:true

2.2 贪婪与非贪婪

默认情况下,量词是贪婪的,会尽可能多地匹配字符。通过在量词后加上 ? 可以使其变为非贪婪。

String pattern = "a+?b";
String text = "aaab";
boolean isMatch = text.matches(pattern);
System.out.println(isMatch);  // 输出:true

3. 分组与捕获

分组允许将多个字符当作一个单元进行处理,并可通过捕获获得匹配的子串。

String pattern = "(\\d+)-(\\w+)";
String text = "123-abc";
Pattern regex = Pattern.compile(pattern);
Matcher matcher = regex.matcher(text);
if (matcher.matches()) {
    System.out.println("Number: " + matcher.group(1));  // 输出:Number: 123
    System.out.println("Text: " + matcher.group(2));    // 输出:Text: abc
}

4. 边界匹配

边界匹配用于限定匹配发生的位置。

4.1 ^$

^ 表示匹配字符串的开头,$ 表示匹配字符串的结尾。

String pattern = "^\\d{3}$";
String text = "123";
boolean isMatch = text.matches(pattern);
System.out.println(isMatch);  // 输出:true

4.2 \b\B

\b 表示单词边界,\B 表示非单词边界。

String pattern = "\\bword\\b";
String text = "wording";
boolean isMatch = text.matches(pattern);
System.out.println(isMatch);  // 输出:false

5. 替换与分割

除了匹配,正则表达式还常用于替换和分割字符串。

5.1 替换

String pattern = "\\s+";
String text = "Hello    World";
String replacedText = text.replaceAll(pattern, " ");
System.out.println(replacedText);  // 输出:Hello World

5.2 分割

String pattern = ",";
String text = "apple,orange,banana";
String[] parts = text.split(pattern);
for (String part : parts) {
    System.out.println(part);
}
// 输出:
// apple
// orange
// banana

6.常用正则表达式

当使用正则表达式时,常用的一些模式可以帮助你快速匹配和处理文本。以下是一些常见的正则表达式示例:

  1. 匹配整数:

    String integerPattern = "^\\d+$";
    
  2. 匹配浮点数:

    String floatPattern = "^\\d+\\.\\d+$";
    
  3. 匹配邮箱地址:

    String emailPattern = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";
    
  4. 匹配URL:

    String urlPattern = "^(https?|ftp)://[\\w-]+(\\.[\\w-]+)+([/?].*)?$";
    
  5. 匹配日期(YYYY-MM-DD):

    String datePattern = "^\\d{4}-\\d{2}-\\d{2}$";
    
  6. 匹配手机号码:

    String phonePattern = "^1[3456789]\\d{9}$";
    
  7. 匹配身份证号码(18位):

    String idCardPattern = "^\\d{17}(\\d|X|x)$";
    
  8. 匹配IP地址:

    String ipPattern = "^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$";
    
  9. 匹配HTML标签:

    String htmlTagPattern = "<([a-zA-Z]+)\\b[^>]*>.*?</\\1>";
    
  10. 匹配中文字符:

    String chinesePattern = "[\\u4e00-\\u9fa5]";
    

这些正则表达式模式可以用作基础模板,根据具体需求进行调整。在使用正则表达式时,始终要考虑目标字符串的实际情况,以确保匹配的准确性。

结论

Java正则表达式是处理字符串匹配、替换和分割的重要工具。通过学习正则表达式的基础语法和常用模式,你可以更高效地处理文本数据。希望本文的详细介绍和示例能够帮助你更好地理解和应用Java正则表达式。

0

评论区