^ _ ^
什么是正则表达式
正则表达式定义了一种字符串模式,用这个模式对字符串进行搜索,可以找到所有符合该模式的子字符串。
正则表达式的使用
Java中正则表达式相关类定义在 java.util.regex
包中,主要包括以下三类:
Pattern
: Pattern 对象是一个正则表达式的编译表示。Matcher
: Matcher 对象是对输入字符串进行匹配的引擎。PatternSyntaxException
: PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
基本使用
1 |
|
反斜杠
正则表达式中有一些特殊符号,如\d
,\w
等,在其他语言(如JavaScript)可以直接这样写。但是 Java 有些不一样,因为 Java 的转义符号是 \\
而不是 \
。
特殊字符
字符 | 说明 |
---|---|
\ | 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。 |
^ | 匹配输入字符串开始的位置。 |
$ | 匹配输入字符串结尾的位置。 |
* | 零次或多次匹配前面的字符或子表达式。 |
+ | 一次或多次匹配前面的字符或子表达式。 |
? | 零次或一次匹配前面的字符或子表达式。 |
{n} | 正好匹配 n 次。 |
{n,} | 至少匹配 n 次。 |
{n,m} | 匹配至少 n 次,至多 m 次。 |
? | 当此字符紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是”非贪心的”。 |
. | 匹配除”\r\n”之外的任何单个字符。 |
(pattern) | 匹配 pattern 并捕获该匹配的子表达式。 |
(?:pattern) | 匹配 pattern 但不捕获该匹配的子表达式。 |
(?=pattern) | 例如,’Windows (?=95 |
(?!pattern) | 例如,’Windows (?!95 |
x|y | 匹配 x 或 y。 |
[xyz] | 字符集。匹配包含的任一字符。 |
[^xyz] | 反向字符集。匹配未包含的任何字符。 |
[a-z] | 字符范围。匹配指定范围内的任何字符。 |
[^a-z] | 反向范围字符。 |
\b | 匹配一个字边界,即字与空格间的位置。 |
\B | 非字边界匹配。 |
\cx | 匹配 x 指示的控制字符。例如,\cM 匹配 Control-M 或回车符。 |
\d | 数字字符匹配。 |
\D | 非数字字符匹配。 |
\s | 匹配任何空白字符。 |
\S | 匹配任何非空白字符。 |
\w | 匹配任何字类字符,包括下划线。 |
\W | 与任何非单词字符匹配。 |