import java.awt.List;
import java.util.ArrayList;
/********************************************************************
* 文件名称:Main.java
* 所属项目名称:正则的学习
* 创建人:
* 创建时间:2013-7-24 下午3:38:54
* Copyright (c) 2013 BlackCrystal. All rights reserved.
********************************************************************/
public class Main {
/**
*
* 函数名称:main
* 功能描述:
* @param args
* 修改日志:
*
*
版本日期作者描述*
0.12013-12-2Administrator初始创建*
*/
public static void main(String[] args) {
/**
* .句点符号:
* 通用匹配符号,可以匹配所有字符。
* 例子:
* 三个字母的单词,以t为开头以n为结尾。
*/
String test = "t n";
System.out.println("句点符号测试:"+test.matches("t.n")+"\n");
/**
* []方括号符号:
* 方括号里面指定的字符才参与匹配,并且方括号内只能匹配单个字符
*/
String test2 = "twn,toon";
for (String s : test2.split(","))
System.out.println("方括号符号测试:"+s.matches("t[wo]n"));
System.out.println();
/**
* |(或)符号
* “|”操作符的基本意义就是“或”运算。要匹配“toon”,使用“t(a|e|i|o|oo)n”正则表达式。这里不能使用方扩号,
* 因为方括号只允许匹配单个字符;这里必须使用圆括号“()”。
*/
String test3 = "twn,toon,t n";
for (String s : test3.split(","))
System.out.println("|(或)符号测试:"+s.matches("t(w|oo)n"));
System.out.println();
/**
* 匹配次数的符号
* *:0次活多次
* +:1次或者多次
* ?:0次或者1次
* {n}:恰好n次
* {n,m}从n次到m次
*/
String test4 = "twn,toooon,tpn,tn";
for (String s : test4.split(","))
System.out.println("*符号测试:"+s.matches("t(w|oo)*n"));
System.out.println();
for (String s : test4.split(","))
System.out.println("+符号测试:"+s.matches("t(w|oo)+n"));
System.out.println();
for (String s : test4.split(","))
System.out.println("?符号测试:"+s.matches("t(w|oo)?n"));
System.out.println();
for (String s : test4.split(","))
System.out.println("{n}符号测试:"+s.matches("t(w|oo){1}n"));
System.out.println();
for (String s : test4.split(","))
System.out.println("{n,m}符号测试:"+s.matches("t(w|oo){0,2}n"));
System.out.println();
String test5 = "999-99-9999,999 99 9999,999999999";
for(String s:test5.split(",")){
System.out.println(s.matches("[0-9]{3}\\-?\\s?[0-9]{2}\\-?\\s?[0-9]{4}"));
}
System.out.println();
/**
* ^"否"符号
* “^”符号称为“否”符号。如果用在方括号内,“^”表示不想要匹配的字符。
*/
String test6 = "tnp,tp,xnp,toop";
for(String s:test6.split(","))
System.out.println("^(否)符号测试:"+s.matches("[^x].+p"));
System.out.println();
/**
* 圆括号()和空白符号'\s'
* 新出现的“\s”符号是空白符号,匹配所有的空白字符,包括Tab字符。如果字符串正确匹配,
* 接下来如何提取出月份部分呢?只需在月份周围加上一个圆括号创建一个组,然后用ORO API(本文后面详细讨论)提取出它的值。
*/
String test7 = "June 26, 1951";
System.out.println("\\s符号测试:"+test7.matches("([A-Z|a-z]+)\\s+[0-9]{1,2}\\,\\s*[0-9]{4}"));
System.out.println();
/**
* 其他符号:
* \d:等价于[0-9]
* \D:等价于[^0-9]
* \w:等价于[A-Z|a-z|0-9]
* \W:等价于[^A-Z|a-z|0-9]
* \s:等价于[\t\n\r\f]
* \S:等价于[^\t\n\r\f]
*/
String test8 = "238,abc123,abc 123";
for(String s:test8.split(","))
System.out.println(s.matches("\\w+\\s?\\d{3}?"));
}
}
打印输出结果:
句点符号测试:true
方括号符号测试:true
方括号符号测试:false
|(或)符号测试:true
|(或)符号测试:true
|(或)符号测试:false
*符号测试:true
*符号测试:true
*符号测试:false
*符号测试:true
+符号测试:true
+符号测试:true
+符号测试:false
+符号测试:false
?符号测试:true
?符号测试:false
?符号测试:false
?符号测试:true
{n}符号测试:true
{n}符号测试:false
{n}符号测试:false
{n}符号测试:false
{n,m}符号测试:true
{n,m}符号测试:true
{n,m}符号测试:false
{n,m}符号测试:true
true
true
true
^(否)符号测试:true
^(否)符号测试:false
^(否)符号测试:false
^(否)符号测试:true
\s符号测试:true
false
true
true