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