随笔-124  评论-49  文章-56  trackbacks-0

 

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 阅读(139) 评论(0)  编辑  收藏 所属分类: java

只有注册用户登录后才能发表评论。


网站导航: