java正则表达式学习笔记
2014-02-12 14:34
381 查看
/**
regular expression 正则表达式:用来匹配字符串的模板,简单的讲,任意字符串,包括诸如"abc"这样的字符串常量都是正则表达式
只是"abc"这样的正则表达式只能匹配它本身,实际中没有什么意义.可以将正则表达式看成包含特殊字符的字符串
正则表达式中的特殊字符(具有特殊含义的字符):
():标记子表达式的开始和结束.
*:表示前面的子表达式可以出现零次或多次.
+:表示前面的子表达式可以出现一次或多次.
?:表示前面的子表达式可以出现零次或一次.
.:可以匹配除换行符\n之外的任何单个字符
\:转义字符
|:表示选项之间任选一项
正则表达式中的通配符:
.:可以匹配除换行符\n之外的任何单个字符
\d:匹配0~9所有数字
\D:匹配非数字
\s:匹配所有空白字符
\S:匹配非空白字符
\w:匹配所有单词字符,包括0~9数字,26个英文字符,下划线
\W:匹配所有非单词字符
方括号表达式的作用:
表示枚举:例如:[abc]表示a,b,c其中任意一个字符
表示范围:例如:[a-f]表示a~f范围内的任意一个字符,[\u0061-\u007f]表示unicode编码为0061~007f之间的字符
表示求否:例如[^abc]
表示与运算&&:例如:[a-z && ^bc]表示a~z范围内除b,c以外的字符.
圆括号表达式用来将多个表达式组成一个子表达式,圆括号中可以使用或运算符(|)例如:(private|protected|public)正则表达式式用来匹配
java三个访问权限控制符之一
数量标识符
X*:表示X表达式出现零次或多次.
X+:表示X表达式出现一次或多次.
X?:表示X表达式出现零次或一次.
X{n}:表示X表达式出现n次
X{n,}:表示X表达式至少出现n次
X{n,m}:表示X表达式至少出现n次,至多出现m次
*/
测试代码
import java.util.regex.*;
import java.util.*;
public class PatternTest
{
public static void main(String[] args)
{
/**验证字符串常量也是正则表达式,该正则表达式仅能匹配它自身*/
System.out.println("1: " + "china".matches("china"));/*可以看到打印为true.由此可看出字符串常量也是正则表达式。*/
/** \uffff表示unicode编码为16进制ffff的字符,比如'\u0061'表示字符'a' */
System.out.println("2: " + "\u0061");
/**验证方括号表达式的作用*/
System.out.println("3: " + "z".matches("[a-c,h-i]"));/*输出为false*/
System.out.println("3: " + "a".matches("[a,b,c]"));/*输出为true*/
System.out.println("3: " + "a".matches("[^abc]"));/*输出为false*/
System.out.println("4: " + "35a".matches("\\d\\d."));/*输出为true \\d\\d.匹配第一第二个字符为数字第三个为任意字符的字符串*/
System.out.println("5: " + "hello world!".replaceFirst("\\w*","#" ));
System.out.println("5: " + "hello world!".replaceFirst("\\w*?","#" ));
System.out.println("8: " + "@美人:私聊吧".matches("@[^:]+:.+" ));
System.out.println("9: " + "@美女:私聊".split("[:|:]")[0]);
System.out.println("9: " + "@美女:私聊".split("[:|:]")[0]);
/**将正则表达式编译成模板pattern*/
//String regex = "[a-z_]\\w*"; /*定义一个正则表达式式用来判断标识符是否合法 假设标识符命名规则如下:1以小写字符或下划线开头,只能采用数字,26个英文字符,和下划线*/
String regex = "\\w+";
Pattern pattern = Pattern.compile(regex);
Matcher match = pattern.matcher("java is very easy");
System.out.println("6: "+ match.matches());
int i = 0;
while(match.find(i))
{
System.out.println(match.group());
i = match.end();
}
Pattern pattern2 = Pattern.compile(" +");
String[] strs = pattern2.split("java is very easy", 4);
for(String s : strs)
{
System.out.println(s);
}
}
}
regular expression 正则表达式:用来匹配字符串的模板,简单的讲,任意字符串,包括诸如"abc"这样的字符串常量都是正则表达式
只是"abc"这样的正则表达式只能匹配它本身,实际中没有什么意义.可以将正则表达式看成包含特殊字符的字符串
正则表达式中的特殊字符(具有特殊含义的字符):
():标记子表达式的开始和结束.
*:表示前面的子表达式可以出现零次或多次.
+:表示前面的子表达式可以出现一次或多次.
?:表示前面的子表达式可以出现零次或一次.
.:可以匹配除换行符\n之外的任何单个字符
\:转义字符
|:表示选项之间任选一项
正则表达式中的通配符:
.:可以匹配除换行符\n之外的任何单个字符
\d:匹配0~9所有数字
\D:匹配非数字
\s:匹配所有空白字符
\S:匹配非空白字符
\w:匹配所有单词字符,包括0~9数字,26个英文字符,下划线
\W:匹配所有非单词字符
方括号表达式的作用:
表示枚举:例如:[abc]表示a,b,c其中任意一个字符
表示范围:例如:[a-f]表示a~f范围内的任意一个字符,[\u0061-\u007f]表示unicode编码为0061~007f之间的字符
表示求否:例如[^abc]
表示与运算&&:例如:[a-z && ^bc]表示a~z范围内除b,c以外的字符.
圆括号表达式用来将多个表达式组成一个子表达式,圆括号中可以使用或运算符(|)例如:(private|protected|public)正则表达式式用来匹配
java三个访问权限控制符之一
数量标识符
X*:表示X表达式出现零次或多次.
X+:表示X表达式出现一次或多次.
X?:表示X表达式出现零次或一次.
X{n}:表示X表达式出现n次
X{n,}:表示X表达式至少出现n次
X{n,m}:表示X表达式至少出现n次,至多出现m次
*/
测试代码
import java.util.regex.*;
import java.util.*;
public class PatternTest
{
public static void main(String[] args)
{
/**验证字符串常量也是正则表达式,该正则表达式仅能匹配它自身*/
System.out.println("1: " + "china".matches("china"));/*可以看到打印为true.由此可看出字符串常量也是正则表达式。*/
/** \uffff表示unicode编码为16进制ffff的字符,比如'\u0061'表示字符'a' */
System.out.println("2: " + "\u0061");
/**验证方括号表达式的作用*/
System.out.println("3: " + "z".matches("[a-c,h-i]"));/*输出为false*/
System.out.println("3: " + "a".matches("[a,b,c]"));/*输出为true*/
System.out.println("3: " + "a".matches("[^abc]"));/*输出为false*/
System.out.println("4: " + "35a".matches("\\d\\d."));/*输出为true \\d\\d.匹配第一第二个字符为数字第三个为任意字符的字符串*/
System.out.println("5: " + "hello world!".replaceFirst("\\w*","#" ));
System.out.println("5: " + "hello world!".replaceFirst("\\w*?","#" ));
System.out.println("8: " + "@美人:私聊吧".matches("@[^:]+:.+" ));
System.out.println("9: " + "@美女:私聊".split("[:|:]")[0]);
System.out.println("9: " + "@美女:私聊".split("[:|:]")[0]);
/**将正则表达式编译成模板pattern*/
//String regex = "[a-z_]\\w*"; /*定义一个正则表达式式用来判断标识符是否合法 假设标识符命名规则如下:1以小写字符或下划线开头,只能采用数字,26个英文字符,和下划线*/
String regex = "\\w+";
Pattern pattern = Pattern.compile(regex);
Matcher match = pattern.matcher("java is very easy");
System.out.println("6: "+ match.matches());
int i = 0;
while(match.find(i))
{
System.out.println(match.group());
i = match.end();
}
Pattern pattern2 = Pattern.compile(" +");
String[] strs = pattern2.split("java is very easy", 4);
for(String s : strs)
{
System.out.println(s);
}
}
}
相关文章推荐
- jdk1.7环境变量配置图文教程:jdk下载安装步骤详解
- Java静态方法是否可以被继承
- Java中的sleep()和wait()的区别
- Java数组的使用
- 【Java设计模式】装饰模式
- Eclipse常用开发插件
- java.util.concurrent 之ConcurrentHashMap 源码分析
- 如何在eclipse里关联查看android源码
- 在Eclipse中使用Checkstyle
- struts.xml配置之动态调用与通配符
- 企业级安全服务权限控制 Acegi安装系统介绍 Spring Framework安全系统
- Spring入门案例
- Spring的依赖注入 引用注入 构造器注入
- struts2.0中struts.xml配置文件详解
- 文件格式 tar.gz zip zp2 zip rar
- java动态编译
- 基础加强____【Java高级特性__反射】
- Java I/O库的两个设计模式:
- Spring MVC 教程,快速入门,深入分析(转载)
- 【JAVA资料免费下载】158个JAVA免豆精品资料汇总