Java正则表达式:特殊字符匹配与替换
和特殊字符组成。其中,特殊字符具有特殊的含义,用于描述字符串的模式。下面是一些常用的特殊字符:
- .: 匹配任意字符(除了换行符)
- *: 匹配前一个字符的零个或多个重复
- +: 匹配前一个字符的一个或多个重复
- ?: 匹配前一个字符的零个或一个重复
- []: 匹配方括号中的任意一个字符
- [^]: 匹配不在方括号中的任意一个字符
- |: 匹配多个模式之一
- \: 转义字符,用于匹配特殊字符本身(例如- \.匹配句点)
除了上述特殊字符之外,还有一些其他的特殊字符和语法,用于描述更复杂的模式。在本文中,我们将重点介绍一些常用的特殊字符和语法。
特殊字符的匹配
匹配数字
首先,让我们来看一下如何使用正则表达式匹配数字。
在正则表达式中,我们可以使用\d来匹配任意一个数字。例如,我们可以使用正则表达式\d+来匹配一个或多个连续的数字。
下面是一个示例代码,用于从字符串中提取数字:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class NumberExtractor {
    public static void main(String[] args) {
        String input = "I have 10 apples and 5 oranges.";
        String pattern = "\\d+";
        Pattern compiledPattern = Pattern.compile(pattern);
        Matcher matcher = compiledPattern.matcher(input);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}
在上面的示例中,我们使用了Pattern和Matcher类来进行正则表达式的匹配。Pattern类表示一个正则表达式的编译表示形式,而Matcher类提供对字符串的匹配操作。
运行上述代码,输出将是:
10
5
匹配邮箱
接下来,我们将介绍如何使用正则表达式匹配邮箱。
在正则表达式中,我们可以使用[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}来匹配一个合法的邮箱地址。
下面是一个示例代码,用于从字符串中提取邮箱地址:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EmailExtractor {
    public static void main(String[] args) {
        String input = "My email is john@example.com.";
        String pattern = "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}";
        Pattern compiledPattern = Pattern.compile(pattern);
        Matcher matcher = compiledPattern.matcher(input);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}
运行上述代码,输出将是:
john@example.com
匹配URL
还有一个常见的需求是匹配URL。在正则表达式中,我们可以使用https?://\S+来匹配一个合法的URL。
下面是一个示例代码,用于从字符串中提取URL










