正则表达式是一种强大的文本处理工具,用于搜索、匹配、替换文本。它们定义了字符串的搜索模式,可以快速地检查一个字符串是否与某个模式匹配,提取匹配字符串,或者执行替换操作。正则表达式在文本编辑器、编程语言和数据库管理中广泛应用。
基本组成
正则表达式由普通字符(例如字母和数字)以及特殊字符(称为"元字符")组成。以下是一些基本元字符及其用途:
.:匹配除换行符以外的任意单个字符。^:匹配输入字符串的开始位置。$:匹配输入字符串的结束位置。*:前面的字符可以出现零次或多次。+:前面的字符至少出现一次。?:前面的字符最多出现一次。{n}:前面的字符恰好出现n次。{n,}:前面的字符至少出现n次。{n,m}:前面的字符至少出现n次,但是不超过m次。[]:字符集合。匹配所包含的任意一个字符。|:选择。匹配|前后的任意一个表达式。():分组符号,把各个字符组合成一个组进行处理。
转义特殊字符
在正则表达式中,如果你想匹配元字符本身,比如"?"或"*",你需要使用反斜杠(\)对它们进行转义。例如,\?匹配问号,\*匹配星号。
常用的预定义字符类
\d:任意数字,等价于[0-9]。\D:任意非数字,等价于[^0-9]。\s:任意的空白符(包括空格、制表符、换行符等)。\S:任意的非空白符。\w:任意的单词字符(包括字母、数字和下划线)。\W:任意的非单词字符。
示例
- 匹配邮箱地址:
[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}
在Java中使用正则表达式
Java通过java.util.regex包中的Pattern和Matcher类提供对正则表达式的支持。
示例:检查字符串是否为数字
import java.util.regex.*;public class Main {public static void main(String[] args) {String input = "12345";String regex = "\\d+";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(input);if (matcher.matches()) {System.out.println(input + " is a number.");} else {System.out.println(input + " is not a number.");}}
}