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
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号