元字符是在Java正则表达式中具有特殊含义的字符。
Java中的正则表达式支持的元字符如下:
( ) [ ] { } \ ^ $ | ? * + . < > - = ! 元字符[和] 指定正则表达式中的字符类。
字符类是一组字符。正则表达式引擎将尝试匹配集合中的一个字符。
字符类“[ABC]"将匹配字符A,B或C.例如,字符串“woman"或“women"将匹配正则表达式“wom [ae] n"。
我们可以使用字符类指定一个字符范围。
范围使用连字符- 字符表示。
例如,[A-Z] 表示任何大写英文字母;“[0-9]"表示0和9之间的任何数字。
^ 表示不是。
例如,[^ ABC] 表示除A,B和C以外的任何字符。
字符类[^ A-Z] 表示除大写字母之外的任何字符。
如果^ 出现在字符类中,除了开头,它只匹配一个^ 字符。
例如,“[ABC ^]"将匹配A,B,C或^。
您还可以在一个字符类中包含两个或多个范围。例如,[a-zA-Z] 匹配任何字符a到z和A到Z.
[a-zA-Z0-9] 匹配任何字符a到z(大写和小写)和任何数字0到9。
下表列出了字符类的示例
字符a到z
| 字符类 | 含义 |
|---|---|
| [abc] | 字符a,b或c |
| [^xyz] | 除x,y和z以外的字符 |
| [a-z] | |
| [a-cx-z] | 字符a到c或x到z,其将包括a,b,c,x,y或z。 |
| [0-9&&[4-8]] | 两个范围(4,5,6,7或8)的交叉, |
| [a-z&&[^aeiou]] | 所有小写字母减元音 |
下表列出了一些常用的预定义字符类。
预定义
字符
类
| 含义 | |
|---|---|
| . | 任何字符 |
| \d | 数字。 与[0-9]相同 |
| \D | 非数字。 与[^ 0-9]相同 |
| \s | 空格字符。 包括与[\\ t \\ n \\ x0B \\ f \\ r]相同。
|
| \S | 非空白字符。 与[^ \\ s]相同 |
| \w | 一个字符。 与[a-zA-Z_0-9]相同。 |
| \W | 非字字符。 与[^ \ w]相同。 |
以下代码使用\d 匹配所有数字。
\\d 在字符串中用于转义\ 。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String args[]) {
Pattern p = Pattern.compile("Java \\d");
String candidate = "Java 4";
Matcher m = p.matcher(candidate);
if (m != null)
System.out.println(m.find());
}
}
上面的代码生成以下结果。

以下代码\w+ 匹配任何单词。
双斜杠用于转义\ 。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String args[]) {
String regex = "\\w+";
Pattern pattern = Pattern.compile(regex);
String candidate = "asdf Java2s.com";
Matcher matcher = pattern.matcher(candidate);
if (matcher.find()) {
System.out.println("GROUP 0:" + matcher.group(0));
}
}
}
上面的代码生成以下结果。
