java正則表達式笔记
java正則表達式学习记录
正則表達式(regular expressions)是一种描写叙述字符串集的方法。它是以字符串集中各字符串的共同拥有特征为根据的。
正則表達式能够用于搜索、编辑或者是操作文本和数据。
它超出了 Java 程序设计语言的标准语法。因此有必要去学习特定的语法来构建正則表達式。正則表達式的变化是复杂的。一旦你理解了它们是怎样被构造的话,你就能解析或者构建随意的正則表達式了。
字符类
字符类 |
|
[abc] |
a, b 或 c(简单类) |
[^abc] |
除 a, b 或 c 之外的随意字符(取反) |
[a-zA-Z] |
a 到 z,或 A 到 Z,包含(范围) |
[a-d[m-p]] |
a 到 d。或 m 到 p:[a-dm-p](并集) |
[a-z&&[def]] |
d。e 或 f(交集) |
[a-z&&[^bc]] |
除 b 和 c 之外的 a 到 z 字符:[ad-z](差集) |
[a-z&&[^m-p]] |
a 到 z,而且不包含 m 到 p:[a-lq-z](差集) |
提前定义字符类
提前定义字符类 |
|
. |
不论什么字符(匹配或者不匹配行结束符) |
\d |
数字字符:[0-9] |
\D |
非数字字符:[^0-9] |
\s |
空白字符:[\t\n\x0B\f\r] |
\S |
非空白字符:[^\s] |
\w |
单词字符:[a-zA-Z_0-9] |
\W |
非单词字符:[^\w] |
词量
量 词 种 类 |
意 义 |
||
贪婪 |
勉强 |
侵占 |
|
X? |
X?? |
X?+ |
匹配 X 零次或一次 |
X* |
X*? |
X*+ |
匹配 X 零次或多次 |
X+ |
X+? |
X++ |
匹配 X 一次或多次 |
X{n} |
X{n}? |
X{n}+ |
匹配 X n 次 |
X{n,} |
X{n,}? |
X{n,}+ |
匹配 X 至少 n 次 |
X{n,m} |
X{n,m}? |
X{n,m}+ |
匹配 X 至少 n 次。但不多于 m 次 |
边界匹配器 |
|
^ |
行首 |
$ |
行尾 |
\b |
单词边界 |
\B |
非单词边界 |
\A |
输入的开头 |
\G |
上一个匹配的结尾 |
\Z |
输入的结尾。仅用于最后的结束符(假设有的话) |
\z |
输入的结尾 |
演示样例:使用分组去文件的扩展名
import java.util.regex.Matcher;
import java.util.regex.Pattern;
publicclass Foo {
publicstatic String testFoo(Stringsource){
//两个分组
Pattern p = Pattern.compile("(\\w+).(.+)");
Matcher mat = p.matcher(source);
mat.find();
//打印分组数
System.out.println(mat.groupCount());
//返回第二个分组内容
returnmat.group(2);
}
publicstaticvoid main(String[]args) {
System.out.println(testFoo("User3.java"));
}
}
打印结果:
2
java