您的位置:首页 > 编程语言 > Java开发

java regex 正则部分高级特性使用

2012-03-17 12:26 696 查看
package unit;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

import org.junit.Assert;

import org.junit.Test;

public class RegexUnit {

@Test

/**

* <p>向前\向后查找</p>

*/

public void unit9()throws Exception{

String testStr = "http://www.google.com";

/* 一般查找

* .+(:) 查询出结果包含 :

*/

Pattern pattern = Pattern.compile(".+(:)");

Matcher matcher = pattern.matcher(testStr);

Assert.assertTrue("错误: 查找出结果通过 .+(:) 此regex没有包含 : ",

matcher.find() && matcher.group().equals("http:") );

/* 向前查找

* .+(?=:) 查询结果不包含 :

*/

Pattern pattern2 = Pattern.compile(".+(?=:)");

Matcher matcher2 = pattern2.matcher(testStr);

Assert.assertTrue("错误: 查找出结果通过 .+(?=:) 此regex有包含 : ",

matcher2.find()&& matcher2.group().equals("http"));

/* 向后查找

* (?<=:).+

*/

Pattern pattern3 = Pattern.compile("(?<=://).+");

Matcher matcher3 = pattern3.matcher(testStr);

Assert.assertTrue("错误:查找出结果包含 http:// 不向后查询",

matcher3.find()&& matcher3.group().equals("www.google.com") );

}

@Test

/** 回朔应用

* 查询回朔、回朔替换、回朔大小写替换

*/

public void unit8()throws Exception{

String testStr = "this is a block of of test,"+

" several words here are are " +

" repeated , and and they should not be. ";

Pattern pattern = Pattern.compile("[ ]+(\\w+)[ ]+\\1");

Matcher matcher = pattern.matcher(testStr);

//查询结果 are are

Assert.assertTrue("错误:regex 不匹配 ",

matcher.find()&&matcher.group().split(" ").length>=2 );

while( matcher.find() ){

Assert.assertTrue("错误:regex 不匹配 ",

matcher.group().split(" ").length>=2 );

}

//替换

String testStr2s = "313-555-1234";

Pattern pattern2 = Pattern.compile("(\\d{3})(-)(\\d{3})(-)(\\d{4})");

Matcher mtmp = pattern2.matcher(testStr2s);

Assert.assertTrue("错误:没有查替换",

mtmp.find() &&

mtmp.replaceAll("($1) $3-$5").equals("(313) 555-1234") );

/*大小写替换(java 不能成功)

* \E 结束 \L 或 \U转换

* \l \L 把下一个字符(串)换为小写

* \ u \U 把下一个字符(串)转换为大写

* 此中 (.*?)懒散加载

*/

String testStr3 = "tt:google:xx";

Pattern pattern3 = Pattern.compile("(?<=:)(.*?)(?=:)");

Matcher matcher2 = pattern3.matcher(testStr3);

if( matcher2.find())

System.out.println( matcher2.group() ) ;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐