正则表达式是一种强大的文本处理工具,用于搜索、匹配、替换文本。它们定义了字符串的搜索模式,可以快速地检查一个字符串是否与某个模式匹配,提取匹配字符串,或者执行替换操作。正则表达式在文本编辑器、编程语言和数据库管理中广泛应用。
基本组成
正则表达式由普通字符(例如字母和数字)以及特殊字符(称为"元字符")组成。以下是一些基本元字符及其用途:
.
:匹配除换行符以外的任意单个字符。^
:匹配输入字符串的开始位置。$
:匹配输入字符串的结束位置。*
:前面的字符可以出现零次或多次。+
:前面的字符至少出现一次。?
:前面的字符最多出现一次。{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.");}}
}