正则表达式

  正则表达式基础: import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { // . 1个字符 // * 0个或多个 // + 1个或多个 // ? 0个或1个 // [] 匹配一个字符 // \s 空白字符 \S 非空白字符 // \w 单词[a-zA-Z_0-9] \W 非单词 // \d 数字 \D 非数字 // \b 单词边界 \B 非单词边界 // ^ 行的开头;在[]内表示取反 // $ 行的结尾; public static void main(String[] args){ //简单认识正则表达式 /* p("abc".matches("...")); p("a8729a".replaceAll("\\d","-")); //Pattern就是编译好后的模式 Pattern p = Pattern.compile("[a-z]{3}"); //Matcher是模式匹配字符串后产生的结果 Matcher m = p.matcher("fgh"); p(m.matches()); p("fgha".matches("[a-z]{3}")); */ //认识. * + ? /* p("a".matches("."));//true p("aa".matches("aa"));//true p("aaaa".matches("a*"));//true p("aaaa".matches("a+"));//true p("".matches("a*"));//true p("aaaa".matches("a?"));//false p("".matches("a?"));//true p("a".matches("a?"));//true p("43243243242".matches("\\d{3,100}"));//true 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]"));//true */ //认识 [] :一个[]内只去匹配一个字符 /* p("a".matches("[abc]"));//true p("a".matches("[^abc]"));//^取反 false p("A".matches("[a-zA-Z]"));//true p("A".matches("[a-z]|[A-Z]"));//同上true p("A".matches("[a-z[A-Z]]"));//同上true p("R".matches("[A-Z&&[RFG]]"));//true */ //认识 \s \w \d /* p(" \n\r\t".matches("\\s{4}"));//true p(" ".matches("\\S"));//false p("a_8".matches("\\w{3}"));//true p("abc888&^%".matches("[a-z]{1,3}\\d+[&^#%]+"));// true p("\\".matches("\\\\"));//true */ //认识 ^ \b $ /* p("hello sir".matches("^h.*"));//true p("hello sir".matches(".*ir$"));//true p("hello sir".matches("^h[a-z]{1,3}o\\b.*"));// \b单词边界 true p("hellosir".matches("^h[a-z]{1,3}o\\b.*"));//fals e //空白行 p(" \n".matches("^[\\s&&[^\\n]]*\\n$")); */ //Email //p("java_ztx@126.com".matches("\\w{1,}@\\w{1,}(\\ .com)$")); //URL //p("http://www.baidu.com/".matches("^((http|https |ftp)://)[\\w-\\.]{1,}\\.(com|cn|net|org|com\\.cn)( /?|/[\\w-\\./]*)")); //查找 /* Pattern p = Pattern.compile("\\d{3,5}"); String s = "123-33333-444-00"; Matcher m = p.matcher(s); //matches()总是匹配完整字符串 p(m.matches()); m.reset(); //find()从左到右找子串 p(m.find()); p(m.start()+"-"+m.end()); p(m.find()); p(m.start()+"-"+m.end()); p(m.find()); p(m.start()+"-"+m.end()); p(m.find()); //p(m.start()+"-"+m.end()); //lookingAt()总从头上开始找子串 p(m.lookingAt());//true p(m.lookingAt());//true */ //查找 /* Pattern p = Pattern.compile("java"); Matcher m = p.matcher("java Java JAVa IloveJAVA you hateJava fasdfas"); while(m.find()){ p(m.group()); } */ //替换 /* Pattern p = Pattern.compile("java");//编译时忽略大小写 Matcher m = p.matcher("java Java JAVa IloveJAVA you hateJava fasdfas"); p(m.replaceAll("JAVA")); */ //替换 /* Pattern p = Pattern.compile("java",Pattern.CASE_INSENSITIVE);/ /编译时忽略大小写 Matcher m = p.matcher("java Java JAVa IloveJAVA you hateJava fasdfas"); StringBuffer sb = new StringBuffer(); int i = 0; while(m.find()){ i++; if(i%2==0){ m.appendReplacement(sb,"java"); }else{ m.appendReplacement(sb,"JAVA"); } } m.appendTail(sb); p(sb); */ //正则表达式分组group /* 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(1));//打印匹配到的第一组 } */ } public static void p(Object o){ System.out.println(o); } } 抓去网页中的Email: import java.io.BufferedReader; import java.io.FileReader; import java.util.regex.Matcher; import java.util.regex.Pattern; public class EmailSpider { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new FileReader("C:\\index.html")); String line = ""; while((line=br.readLine())!=null){ parse(line); } } private static void parse(String line){ Pattern p = Pattern.compile("\\w{1,}@\\w{1,}(\\.com)$"); Matcher m = p.matcher(line); while(m.find()){ System.out.println(m.group()); } } }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值