免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1296 | 回复: 0
打印 上一主题 下一主题

JAVA与正则表达式 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-01 11:05 |只看该作者 |倒序浏览
JAVA与正则表达式




javapatternmatcher正则表达式regex
Java代码  
import java.util.regex.Matcher;   
import java.util.regex.Pattern;   
  
/***  
* JAVA正则表达式测试  
* @author greatwqs  
*  
*/  
public class RegexExpressionTest {   
  
    public static void main(String[] args) {   
           
        //简单认识正则表达式的概念   
        // =============================================================================   
        println("abc".matches("..."));   
        println("a8729a".replaceAll("\\d", "-"));   
        Pattern p = Pattern.compile("[a-z]{3}");   
        Matcher m = p.matcher("fgh");   
        println(m.matches());   
        println("fgha".matches("[a-z]{4}"));  // matches是匹配整个字符串,在这里为"fgha"   
           
           
        //初步认识. * + ?==============================================================   
        // X*  X出现0次以上(包括0次)   
        // X+  X出现1次以上(包括1次)   
//      println("a".matches("."));   
//      println("aa".matches("aa"));   
//      println("aaaa".matches("a*"));   
//      println("aaaa".matches("a+"));   
           
//      println("".matches("a*"));   
        // x? -- 0个或者一个x   
//      println("aaaa".matches("a?"));   
//      println("".matches("a?"));   
//      println("a".matches("a?"));   
        // x{3,100}  x出现3-100次   
//      println("214523145234532".matches("\\d{3,100}"));   
//      println("192.168.0.aaa".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"));   
//      println("192".matches("[0-2][0-9][0-9]"));   
           
        // =============================================================================   
        //范围  ^在[]之间表示非,在最外面表示一行的开头   
//      println("a".matches("[abc]"));     
//      println("a".matches("[^abc]"));   
//      println("A".matches("[a-zA-Z]"));   
//      println("A".matches("[a-z]|[A-Z]"));   
//      println("A".matches("[a-z[A-Z]]"));  // 相当于println("A".matches("[a-z]|[A-Z]"));   
//      println("R".matches("[A-Z&&[RFG]]"));   
           
        // =============================================================================   
        //认识\s \w \d \   
//      println(" \n\r\t".matches("\\s{4}")); //true   
//      println(" ".matches("\\S")); //false   
//      println("a_8".matches("\\w{3}")); //true   
//      println("abc888&^%".matches("[a-z]{1,3}\\d+[&^#%]+"));  // true \\d+  表示数字出现1次以上   
//      println("\\".matches("\\\\")); //true     
        //"\\"为一个反斜线(JAVA语法); 在正则表达式中"\\"代表一个反斜线字符,   
        // 而这个在JAVA中\需要转义,所以正则表达式在JAVA中表示一个反斜线需要4个\,即"\\\\"   
           
        // =============================================================================   
        //POSIX Style 为Unix的一套标准   
//      println("a".matches("\\p{Lower}"));   
        /*\p{Lower} 小写字母字符:[a-z]   
        \p{Upper} 大写字母字符:[A-Z]   
        \p{ASCII} 所有 ASCII:[\x00-\x7F]   
        \p{Alpha} 字母字符:[\p{Lower}\p{Upper}]   
        \p{Digit} 十进制数字:[0-9]   
        \p{Alnum} 字母数字字符:[\p{Alpha}\p{Digit}]   
        \p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~   
        \p{Graph} 可见字符:[\p{Alnum}\p{Punct}]   
        \p{Print} 可打印字符:[\p{Graph}\x20]   
        \p{Blank} 空格或制表符:[ \t]   
        \p{Cntrl} 控制字符:[\x00-\x1F\x7F]   
        \p{XDigit} 十六进制数字:[0-9a-fA-F]   
        \p{Space} 空白字符:[ \t\n\x0B\f\r] */  
  
           
           
        // =============================================================================   
        //boundary  边界匹配开头(^)和结尾($)   
        // "^"在开头则表示一行的开始,EG: "^h.*";   "^"在[]里面表示非,EG: "[^1-9]"   
//
  1.    println("hello sir".matches("^h.*"));  // true   
  2. //      println("hello sir".matches(".*ir$"));  // true   
  3. //      println("hello sir".matches("^h[a-z]{1,3}o\\b.*")); // true 正则"\b"表示单词边界   
  4. //      println("hellosir".matches("^h[a-z]{1,3}o\\b.*"));  // false   
  5.            
  6.         // =============================================================================   
  7.         //whilte lines 空白行   
  8. //      println(" \n".matches("^[\\s&&[^\\n]]*\\n$"));   
  9. //                 
  10. //      println("aaa 8888c".matches(".*\\d{4}."));   
  11. //      println("aaa 8888c".matches(".*\\b\\d{4}."));   
  12. //      println("aaa8888c".matches(".*\\d{4}."));   
  13. //      println("aaa8888c".matches(".*\\b\\d{4}."));   // false   
  14.            
  15.         // =============================================================================   
  16.         // 匹配Email地址   
  17. //      println("greatwqs@163.com".matches("[\\w]+@[\\w]+\\.[\\w]+"));  // "\\w"表示单词字符:[a-zA-Z_0-9]   
  18.         //email   
  19. //      println("asdfasdfsafsf@dsdfsdf.com".matches("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+"));     
  20.         // true  [.-] ".","-"取其一   
  21.            
  22.         // =============================================================================   
  23.         //matches find lookingAt   
  24. //      Pattern p = Pattern.compile("\\d{3,5}");   
  25. //      String s = "123-34345-234-00";   
  26. //      //          01234567890123456789   
  27. //      Matcher m = p.matcher(s);   
  28. //      // println(m.matches());   
  29. //      // m.reset();                       // 进行重置, 相当于没有调用println(m.matches());   
  30. //      println(m.find());                        // find找匹配的子串返回   
  31. //      println(m.start() + "-" + m.end());   
  32. //      println(s.substring(m.start(),m.end()));  // 上面find匹配的子串   
  33. //      println(m.find());   
  34. //      println(m.start() + "-" + m.end());   
  35. //      println(m.find());   
  36. //      println(m.start() + "-" + m.end());   
  37. //      println(m.find());   
  38. //      // println(m.start() + "-" + m.end());      
  39. //      // 前面的println(m.find());为false, 所以表示没有子串匹配, 所以就不能打出下标   
  40. //      println(m.lookingAt());                     
  41. //      // 从匹配的字符串的起始位置匹配相当于m.reset();再m.find();   
  42. //      println(m.lookingAt());   
  43. //      println(m.lookingAt());   
  44. //      println(m.lookingAt());   
  45.            
  46.         // =============================================================================   
  47.         //replacement 字符串的替换   
  48. //      Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);   
  49. //      Matcher m = p.matcher("java Java JAVa JaVa I love JAVA you hate Javaf");   
  50. //      println(m.replaceAll("JAVA"));   
  51.            
  52.         // =============================================================================   
  53.         //group   
  54. //      Pattern p = Pattern.compile("(\\d{3,5})([a-z]{2})");   
  55. //      String s = "123aa-34345bb-234cc-00";   
  56. //      Matcher m = p.matcher(s);   
  57. //      while(m.find()) {   
  58. //          println(m.grouprintln());                 // 打印子串   
  59. //          println(m.start() + "-" + m.end()); // 打印下标   
  60. //          println("");   
  61. //      }   
  62.            
  63.         // =============================================================================   
  64.         //flags的简写   
  65. //      println("Java".matches("(?i)(java)"));   
  66.            
  67.         // =============================================================================   
  68.         //replacement 字符串的替换, 偶数转化为小写,基数转化大写算法   
  69. //      Pattern p = Pattern.compile("java", Pattern.CASE_INSENSITIVE);   
  70. //      Matcher m = p.matcher("java Java JAVa JaVa IloveJAVA you hateJava afasdfasdf");   
  71. //      StringBuffer buf = new StringBuffer();   
  72. //      int i=0;   
  73. //      while(m.find()) {   
  74. //          i++;   
  75. //          if(i%2 == 0) {   
  76. //              m.appendReplacement(buf, "java");   
  77. //          } else {   
  78. //              m.appendReplacement(buf, "JAVA");   
  79. //          }   
  80. //      }   
  81. //      m.appendTail(buf);   
  82. //      println(buf);   
  83.            
  84.     }   
  85.       
  86.     public static void println(Object o) {   
  87.         System.out.println(o);   
  88.     }   
  89.   
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP