Java正则表达式
String 提供了以下方法进行正则表达式匹配:
public boolean matches(String regex);
书写规则
字符类
匹配单个字符。
| 表达式 | 匹配内容 |
|---|---|
[abc] |
a、b或c |
[^abc] |
除了a、b或c(补) |
[a-zA-Z] |
a到z或A到Z(范围) |
[a-d[m-p]] |
a到d或m到p(并) |
[a-z&&[def]] |
d、e或f(交) |
[a-z&&[^bc]] |
a到z除b和c(减) |
预定义字符
匹配单个字符。
| 预定义字符 | 匹配内容 |
|---|---|
. |
任何字符 |
\d |
数字 |
\D |
非数字 |
\s |
空白字符 |
\S |
非空白字符 |
\w |
单词字符* |
\W |
非单词字符 |
*单词字符:[a-zA-Z_0-9]
数量词
| 表达式 | 匹配内容 |
|---|---|
X? |
X,0次或1次 |
X* |
X,0次或多次 |
X+ |
X,1次或多次 |
X{n} |
X,n次 |
X{n,} |
X,至少n次 |
X{n,m} |
X,至少n次,不超过m次 |
其他符号
(?i):忽略大小写|:或():分组
应用
内容查找
案例
String data = ...;
String regex = ...;
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(data);
while(matcher.find()) {
System.out.println(matcher.group());
}
搜索替换、分割内容
String 提供了以下方法用于替换、分割内容:
public String replaceAll(String regex, String newStr):按照正则表达式匹配的内容进行替换public String[] split(String regex):按照正则表达式匹配的内容进行分割字符串,返回字符串数组
案例:将重复字符只保留一个
String st = "aaabbccccc";
st = st.replaceAll("(.)\\1+", "$1"); /* \\1 用于声明组号 */