public class ReEX {
/** *//**
* @param args
*/
/** *//**
* @param args
*/
public static void main(String[] args){
//正则表达式
//用途:字符匹配\字符查找\字符替换
//类:
//-1-java.lang.String
//-2-java.util.regex.Pattern
//-3-java.util.regex.Matcher
//.代表一个字符,例:
//p("abc".matches(""))
//replaceAll(regex, replacement)方法
//p("a8789a".replaceAll("\\d", "-"));
//Pattern类--代表匹配字符串的模式,使用Pattern.compile(arg0)方法
//[a-z]a到z中的一个字符;[a-z]{3}a到z中的任三个字符
//Pattern类的matcher(string)方法--用模式匹配某个字符串(String实现了CharSequence字符序列的接口)
//Matcher类的matches()方法--得到结果
//Pattern p = Pattern.compile("[a-z]{3}");
//Matcher m=p.matcher("fgh");//Matcher是一个匹配器用于存储结果
//p(m.matches());
//以上代码同于p(fgh.matches([a-z]{3}));
//*零个或多个
//+一个或多个
//?零个或一个
//例子
/**//*p("a".matches("."));
p("aa".matches("aa"));
p("aaaa".matches("a*"));
p("aaaa".matches("a+"));
p("aaaa".matches("a?"));//false
p("".matches("a*"));
p("234324324123".matches("\\d{3,100}"));
p("192.168.0.aaa".matches("\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}."));//false
p("192".matches("[0-2][0-9][0-9]"));*/
//范围[]其中一个字符 ^取反 -代表一个范围 |或者 &&取交集
/**//*p("a".matches("[abc]"));
p("a".matches("[^abc]"));
p("A".matches("[a-zA-Z]"));
p("A".matches("[a-z]|[A-Z]"));
p("A".matches("[a-z[A-Z]]"));
p("R".matches("[A-Z&&[RFG]]"));*/
//认识 \s一个空白字符 \一个构成单词的字符 \d 代表一个数字
// \S上面取反 \W上面取反 \D上面取反
/**//*p(" \n\r\t".matches("\\s{4}"));
p(" ".matches("\\S"));
p("a_8".matches("\\w{3}"));
p("abc888&^".matches("[a-z]{1,3}\\d+[&^#]+"));
p("\\".matches("\\\\"));*/
//边界处理
/**//*p("hello sir".matches("^h.*"));
p("hello sir".matches(".*ir$"));
p("hello sir".matches("^h[a-z]{1,3}o\\b.*"));
p("hellosir".matches("^h[a-z]{1,3}o\\b.*"));
p(" \n".matches("^[\\s&&[^\\n]]*\\n$"));//空白行*/
//练习
/**//*p("aaa 8888c".matches(".*\\d{4}."));
p("aaa 8888c".matches(".*\\b\\d{4}."));
p("aaa8888c".matches(".*\\d{4}."));
p("aaa8888c".matches(".*\\b\\d{4}."));*/
//email
//p("safsadfsdafsafasf@dsafsaf.com".matches("[\\w[.-]+@[\\w[.-]]]+\\.[\\w]+"));
//find();依次顺序查找子串 lookingAt();每次从开始位置开始查找子串 m.start()找到的起始位,m.end()找到的子串未位,找不到使用会报错
/**//*Pattern p=Pattern.compile("\\d{3,5}");
String s="123-23234-343-00";
Matcher m=p.matcher(s);
p(m.matches());
m.reset();//把原来吃进的子串给吐出来
p(m.find());
p(m.start()+"-"+m.end());//m.start()找到的起始位,m.end()找到的子串未位,找不到使用会报错
p(m.find());
p(m.find());
p(m.find());
p(m.lookingAt());
p(m.lookingAt());
p(m.lookingAt());
p(m.lookingAt());*/
//replacement()--字符串的替换
/**//*Pattern p=Pattern.compile("java",Pattern.CASE_INSENSITIVE);//Pattern.CASE_INSENSITIVE 略大小写
Matcher m=p.matcher("java Java JAVa IloveJAVA you hateJava");
StringBuffer buf=new StringBuffer();
int i=0;
//p(m.replaceAll("JAVA"));
while(m.find())
{
i++;
if(i%2==0)
{
m.appendReplacement(buf, "java");
}
else
{
m.appendReplacement(buf, "JAVA");
}
}
p(buf);*/
//分组
/**//*Pattern p=Pattern.compile("(\\d{3,5})([a-z]{2})");
String s="123aa-34345bb-234cc-00";
Matcher m=p.matcher(s);
while(m.find())
{
p(m.group());
//p(m.group(1));
//p(m.group(2));
}*/
//(?=a)不捕获a .{3}(?=a)为444;.{3}(?!a)为66b
/**//*Pattern p = Pattern.compile(".{3}(?!a)");
String s = "444a66b";
Matcher m = p.matcher(s);
while(m.find()) {
p(m.group());
}*/
//back refenrences向前引用(\\d\\d)\\1
//Pattern p = Pattern.compile("(\\d\\d)\\1");
//String s = "1212";
/**//*Pattern p = Pattern.compile("(\\d(\\d))\\2");
String s = "122";
Matcher m = p.matcher(s);
p(m.matches());*/
//flages的简写
//Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);
//p("Java".matches("(?i)(java)")); //同上
}
public static void p(Object o){
System.out.println(o);
}
}
class Rexg
{
public static void main(String[] args)
{
// \d{5}(-\d{4})? ?表示上面的可有可无
/**//*p("10101".matches("\\d{5}(-\\d{4})?"));
p("10101-1234".matches("\\d{5}(-\\d{4})?"));
p("abc".matches("abc?"));
p("ab".matches("abc?"));
p("abc".matches("a(bc)?"));
p("a".matches("a(bc)?"));*/
//子匹配 用()括起 \1表示每一个()中的子匹配
//1221,3553可表示为(\d)(\d)\2\1
//11111,22222可表示为(\d)\1{4}
//作用:1有效性验证 2 替换内容 3查找某一类形的文本
}
public static void p(Object obj)
{
System.out.println(obj);
}
}
posted on 2009-11-03 10:15
junly 阅读(148)
评论(0) 编辑 收藏 所属分类:
java