正则表达式

来源:互联网 发布:crm数据分析 编辑:程序博客网 时间:2024/06/18 18:26
import java.util.regex.Matcher;import java.util.regex.Pattern;import com.sun.xml.internal.ws.api.streaming.XMLStreamWriterFactory.Zephyr;public class demo01 {public static void main(String[] args) {// TODO 自动生成的方法存根//matches()判断字符串是否匹配某个表达式,“.”表示任何一个字符p("abc".matches("..."));//将字符串“a2389a”中的数字用*替换,\d表示"0-9"数字p("a2389a".replaceAll("\\d", "*"));//将任何是a--z的字符串长度为3的字符串进行编译,这样可以加快匹配速度Pattern p=Pattern.compile("[a-z]{4}");//进行匹配,并将匹配结果放在Matcher对象中Matcher m=p.matcher("lkjh");p(m.matches());//上面的是三行代码可以用下面一行很代码代替p("abc".matches("[a-z]{3}"));/*** *  *   .              任何字符 a?             a一次或一次也没有 a*             a零次或多次 a+            a一次或多次 a{n}?      a恰好 n 次 a{n,}?       a至少n次  a{n,m}?   a至少n次,但是不超过m次 *///初步认识. * + ?p("判断.:"+"a".matches("."));p("判断aa:"+"aa".matches("aa"));p("判断a*:"+"aaaa".matches("a*"));p("判断a+:"+"aaaa".matches("a+"));p("判断a*:"+"".matches("a*"));p("判断a?:"+"aaaa".matches("a?"));p("判断a?:"+"".matches("a?"));p("判断a?:"+"a".matches("a?"));p("判断{n}"+"139".matches("\\d{3,5}"));//   \.是一个点p("判断IP:"+"192.168.0.a".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.[a-z]"));p("判断192:"+"192".matches("[0-2][0-9][0-9]"));/*** *  * [abc]                    a、b 或 c(简单类)[^abc]                   任何字符,除了 a、b 或 c(否定)[a-zA-Z]                 a 到 z 或 A 到 Z,两头的字母包括在内(范围)[a-d[m-p]]               a 到 d 或 m 到 p:[a-dm-p](并集)[a-z&&[def]]             d、e 或 f(交集)[a-z&&[^bc]]             a 到 z,除了 b 和 c:[ad-z](减去)[a-z&&[^m-p]]            a 到 z,而非 m 到 p:[a-lq-z](减去) *  */p("判断[abc]:"+"a".matches("[abc]"));p("判断[^abc]:"+"a".matches("[^abc]")+"-----e.matches:"+"e".matches("[^abc]"));p("判断[a-zA-Z]:"+"A".matches("[a-zA-Z]")+"------0.matches:"+"0".matches("[a-zA-Z]"));p("判断[a-z|A-Z]:"+"A".matches("[a-z|A-Z]")); //觉得跟上面没有区别p("判断[a-z[A-Z]]:"+"H".matches("[a-z[A-Z]]"));p("判断[a-z&&[def]]:"+"d".matches("[a-z&&[def]]")+"h------"+"h".matches("[a-z&&[def]]")+"--h------"+"h".matches("[a-z&&[deh]]"));p("判断[a-z&&[^hjk]]:"+"d".matches("[a-z&&[^hjk]]")+"------h:"+"h".matches("[a-z&&[^hjk]]")); //不带&&的意思是或p("判断[a-z&&[^a-h]]:"+"l".matches("[a-z&&[^a-h]]")+"-----a"+"a".matches("[a-z&&[^a-h]]"));/*** *  *  \d                         数字:[0-9]\D                         非数字: [^0-9]\s                         空白字符:[ \t\n\x0B\f\r]\S                         非空白字符:[^\s]\w                         单词字符:[a-zA-Z_0-9]\W                         非单词字符:[^\w] */p("判断数字和非数字:"+"5".matches("\\d")+"---a:"+"a".matches("\\d")+"----b:"+"b".matches("\\D"));char C=0xB;p(C);p("判断空格:"+"\t\n\f\r".matches("\\s{4}")+"-------"+"\f\"".matches("\\S{2}")+"\"\"".matches("\\S{2}"));p("判断数字+空格:"+"a_8".matches("\\w{2}")+"a".matches("\\w")+"------_"+"".matches("\\W"));p("abc888&^%".matches("[a-z]{1,3}\\d+[&^%]+"));p("\\".matches("\\\\"));p("判断单词"+"ancffBGG9777".matches("\\w+")+"----"+"%#$%&^%$##@@@".matches("\\W+"));//边界匹配符/**** *  *    ^                                          行的开头      $                                          行的结尾      \b                                        单词边界      \B                                        非单词边界      \A                                        输入的开头      \G                                       上一个匹配的结尾      \Z                                       输入的结尾,仅用于最后的结束符(如果有的话)      \z                                       输入的结尾 */p("hello sir".matches("^h.*")); //以h开头p("hello sir".matches(".*ir$")); //以ir结尾p("hello sir".matches("^h[a-z]{1,3}o\\b\\ssir"));p("hellosir".matches("^h[a-z]{1,3}o\\b.*")+"----------------"+"hellosir".matches("^h[a-z]{1,3}o\\B.*"));//空白行:一个或多个(空白且非换行符)开头,并以换行符结尾p(" \n".matches("^[\\s&&[^\\n]]*\\n$"));//方法解析/*** *  *  *  matches():匹配整个字符串find():匹配子字符串lookingAt():永远从整个字符串的开头开始匹配 */p("测试邮件地址:"+"liuch.....99@q...q....com".matches("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+"));Pattern p1=Pattern.compile("\\d[3,5]");Matcher m1=p1.matcher("123-34345-234-00");    //将整个"123-34345-234-00"用正则表达式引擎查找匹配,当到第一个"-"不匹配了,就停止,        //但不会将不匹配的"-"吐出来p(m1.matches()); //将不匹配的"-"吐出来        m1.reset();        //1:当前面有p(m.matches());查找子字符串从"...34345-234-00"开始        //将会是第1,2两个查到"34345"和"234" 后面2个查不到为false        //2:当前面有p(m.matches());和m.reset();查找子字符串从"123-34345-234-00"开始        //将为true,true,true,false        p(m1.find());        p(m1.start()+"---"+m1.end());        p(m1.find());        p(m1.start()+"---"+m1.end());        p(m1.find());        p(m1.start()+"---"+m1.end());        p(m1.find());              //要是没找到就会报异常java.lang.IllegalStateException        //p(m.start()+"---"+m.end());                p(m1.lookingAt());        p(m1.lookingAt());        p(m1.lookingAt());        p(m1.lookingAt());                //字符串替换        //Pattern.CASE_INSENSITIVE大小写不敏感        Pattern  p2=Pattern.compile("java",Pattern.CASE_INSENSITIVE);        Matcher m2=p2.matcher("java Java jAva ILoveJavA youHateJava adsdsfd");        //存放字符串        StringBuffer buffer=new StringBuffer();        //计数奇偶数        int i=0;        while(m2.find()){        i++;        if(i%2==0){        m2.appendReplacement(buffer, "java");        }else{        m2.appendReplacement(buffer, "JAVA");        }        }        //不加这句话,,字符串adsdsdf将会被丢弃        m.appendTail(buffer);        p(buffer);              //group分组,用()分组        Pattern p3=Pattern.compile("(\\d{3,5})([a-z]{2})");        String s="123aa--34345bb-234cc-000zs";        Matcher m3=p3.matcher(s);        p(m3.groupCount());        while(m3.find()){        p("分组:"+m3.group());        p("分组1:"+m3.group(1));        p("分组2:"+m3.group(2));        }}public static void p(Object o){System.out.println(o);}}

0 0
原创粉丝点击