java正则表达式笔记
2015-07-17 14:21
393 查看
java正则表达式学习记录
正则表达式(regular expressions)是一种描述字符串集的方法,它是以字符串集中各字符串的共有特征为依据的。正则表达式可以用于搜索、编辑或者是操作文本和数据。它超出了 Java 程序设计语言的标准语法,因此有必要去学习特定的语法来构建正则表达式。正则表达式的变化是复杂的,一旦你理解了它们是如何被构造的话,你就能解析或者构建任意的正则表达式了。
字符类
预定义字符类
词量
示例:使用分组去文件的扩展名
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
正则表达式(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
相关文章推荐
- spring ioc原理
- Eclipse里面的快捷键
- 查看Eclipse版本号
- Java神奇的装箱与拆箱
- java注解机制
- Jaxb2 实现JavaBean与xml互转
- JAVA内部类
- Eclipse Memory Analyzer简单使用笔记
- mybatis There is no getter for property named 'xx' in 'class java.lang.String
- Spring Boot使用自定义的properties
- java获取取前段页面的参数
- 前台传后台参数,其中前台js 后台java处理乱码
- Spring自定义标签的原理
- Maven 创建的Java Web项目部署后 WEB-INF/lib下没有jar包
- java学习笔记
- Java编程,String[]转换List
- java web 文件上传处理
- Java基础-- 集合
- Java反射
- 黑马程序员——JDK1.5新特性、单例设计模式