java 正则表达式入门

1.什么是正则表达式

2.正则表达式的基础

2.1元字符

2.2 []–方括号

方括号括起来若干个字符来表示一个元字符,该元字符可代表方括号中的任何一个字符。

reg=”[abc]4” 则”a4”,”b4”,”c4”,都是和此正则表达式匹配的字符串

[^456] —–代表4,5,6之外的任何字符

[a-r] ——-代表a~r中的任何一个字母

[a-Za-Z] ——代表任意一个英文字母

[a-e[g-z]] ——代表a~e或g~z中的任意一个字母

[a-o&&[def]] ——代表字母d,e,f(交运算)

[a-o&&[^bc]] ——代表字母a,d(差运算)

2.3()–括号

将 () 之间括起来的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域,这个元字符在字符串提取的时候非常有用。

2.4使用限定修饰符来限定元字符出现的次数

3.正则表达式的几个样例

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;

public class Regular { 

      public static String regexIsDigital = "\\d+";
      //字符串是否是数字
      public static String regexIsAlpha ="\\p{Alpha}+";
      //字符串是否是字母
      public static String regexIsID="\\d{15}|\\d{18}";
      //字符串是否是15位或18位的身体证号码
       public static String regexIsJJJStartKKKEnd="^JJJ.*KKK$";
       //字符串是否是JJJ开头KKK结尾
       public static String regexIsTelePhoneNumber ="[0-9]{3,4}\\-?[0-9]+";
       //字符串是否是区号是3或4位数字-(可有可没有)号码任意多少位的数字
       public static String regexIsEmail = "\\[email protected]\\w+(\\.\\w{2,3})*\\.\\w{2,3}";   //[email protected]
       public static String regexIsHanZi="[\u4e00-\u9fa5]{1,}";
       //字符串是否是汉字
       public static String regexIsStartJava = "^Java.*";
       //查找以Java开头,任意结尾的字符串
       public static String regexSplit ="[, |]+";
       //以多条件分割字符串时

       public static void main(String[] args) {
              testIsDigit();
              testIsAlpha();
              testIsID();
              testStartEnd();
              testIsTelePhoneNum();
              testEmailAddre();
              testIsHanZi();
              testIsStartJava();
              testSplit();
              testReplace();
              testPattern();
         }

 private static void testPattern() {
     Pattern pattern = Pattern.compile("");
     System.out.println(pattern.matches("[0-9]{6}", "200038"));
     System.out.println(pattern.matches("\\d{6}", "200038"));
  }

  private static void testReplace() {
      Pattern pattern = Pattern.compile("正则表达式");
      Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
      //替换第一个符合正则的数据
      System.out.println(matcher.replaceFirst("Java"));
      pattern = Pattern.compile("正则表达式");
      matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
      //替换所有符合正则的数据
      System.out.println(matcher.replaceAll("Java"));
  }

  private static void testSplit() {
      Pattern pattern = Pattern.compile(regexSplit);
      String data = "Java Hello World  Java,Hello,,World|Sun";
      System.out.println(data+" split by:"+regexSplit);
      String[] strs = pattern.split(data);
      for (int i=0;i<strs.length;i++) {
          System.out.println(strs[i]);
      }
    }

   private static void testIsStartJava() {
      pressInfoByPattern("Java不是人",regexIsStartJava);
      pressInfoByPattern("dJava不是人",regexIsStartJava);
   }

   private static void testIsHanZi() {
       pressInfo("验证汉字",regexIsHanZi);
   }

   private static void testIsTelePhoneNum() {
      pressInfo("0733-5544",regexIsTelePhoneNumber);
      pressInfo("073-566544",regexIsTelePhoneNumber);
      pressInfo("073566544",regexIsTelePhoneNumber);
      pressInfo("073--566544",regexIsTelePhoneNumber);
   }

    private static void testStartEnd() {
       pressInfo("JJJKKK",regexIsJJJStartKKKEnd);
       pressInfo("JJJaaaaKKK",regexIsJJJStartKKKEnd);
       pressInfo("JJaaaaKKK",regexIsJJJStartKKKEnd);
       pressInfo("JJJaaaaKK",regexIsJJJStartKKKEnd);
    }

    private static void testIsID() {
       pressInfo("111111111111111",regexIsID);
       pressInfo("11111111111111",regexIsID);
       pressInfo("111111111111122221",regexIsID);
       pressInfo("11111111111112222",regexIsID);
    }

    private static void testIsAlpha() {
       pressInfo("da",regexIsAlpha);
       pressInfo("d1a",regexIsAlpha);
    }

    private static void testIsDigit() {
       pressInfo("21452",regexIsDigital);
       pressInfo("21a452",regexIsDigital);
       pressInfo("021452",regexIsDigital);
    }

    private static void testEmailAddre() {
        pressInfo("[email protected]",regexIsEmail);
        pressInfo("aaaaaaaa",regexIsEmail);
        pressInfo("[email protected]",regexIsEmail);
     }

     private static void pressInfo(String data,String regex) {
        if(data.matches(regex)){
             System.out.println(data+":is match regex:"+regex);
         }else{
         System.out.println(data+":is not match regex:"+regex);
         }
      }

      private static void pressInfoByPattern(String data,String regex) {
       Pattern pattern = Pattern.compile(regex);
       Matcher matcher = pattern.matcher(data);
       if(matcher.matches()){
            System.out.println(data+":is match regex:"+regex);
        }else{
          System.out.println(data+":is not match regex:"+regex);
        }
    }
}
时间: 2024-10-09 20:44:32

java 正则表达式入门的相关文章

Java正则表达式入门

众所周知,在程序开发中,难免会遇到需要匹配.查找.替换.判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力.因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段. 大 家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.  自从jdk1.4

java正则表达式入门基础

一.正则表达式术语 1)元字符 : 非一般字符,具有某种意义的字符.如 : \bX : \b边界符, 以 X开始的单词 2) 常用 : \d : 匹配一个数字 : \d ,  匹配至少一个以上数字 \d+ \b : 单词边界符 , 如 \bhe 则匹配以he开头的单词, hello等 \w : 与"[A-Za-z0-9_]"等效. 如 \w+ 匹配字符串1,2,3a(bc4,)5,6(e)f78(g) 结果为  123abc456ef78g () : 以 括号内的整串重复出现,如 : 

Java正则表达式入门1

1.定义:正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. 2.用途: 字符串匹配(字符匹配) 字符串查找 字符串替换 字符串分割 例如: 从网页中揪出email地址 IP地址是否正确 从网页中揪出链接 3.java中处理正则表达式的类: java.lang.String java.util.re

JAVA 正则表达式 (超详细)

(PS:这篇文章为转载,我不喜欢转载的但我觉得这篇文章实在是超赞了,就转了过来,这篇可以说是学习JAVA正则表达的必读篇.作者是个正真有功力的人,阅读愉快) 在Sun的JavaJDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式.正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性.在Unix世界里,正则表达式几乎没有

java 正则表达式语法

java 正则表达式语法 标签: 正则表达式javawindowsvbscriptscripting电话 2012-05-20 10:11 6705人阅读 评论(1) 收藏 举报  分类: javaSe(16)  目录(?)[+] 本文目标 如何使用本教程 正则表达式到底是什么? 入门 测试正则表达式 元字符 字符转义 重复 字符类 反义 替换 分组 后向引用 零宽断言 负向零宽断言 注释 贪婪与懒惰 处理选项 平衡组/递归匹配 还有些什么东西没提到 联系作者 最后,来点广告… 一些我认为你可能

Java 正则表达式详解_正则表达式

body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;}

Java正则表达式详解

本文为转载文章,因为实在写的太好了,所以就拿过来使用了 在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式.正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性.在Unix世界里,正则表达式几乎没有什么限制,可肯定的是,它应用非常之广泛. 正则表达式的引擎已被许多普通的Unix工具所实现,包括gr

有shi以来最详细的正则表达式入门教程

原文:有shi以来最详细的正则表达式入门教程 本篇文章文字内容较多,但是要学习正则就必须耐心读下去,正则表达式是正则表达式其实并没有想像中的那么困难,但是想要熟练的掌握它,还是需要下功夫勤加练习的.这里讲一些正则表达式的语法和学习方法,大家还要多参考前辈们写的正则表达式,才能达到熟练精通的地步. 一.正则表达式到底是什么东西?                                                  正则表达式,又称正规表示法.常规表示法(英语:Regular Expre

java正则表达式语法详解及其使用代码实例

原文地址 译者序(下载代码) 正则表达式善于处理文本,对匹配.搜索和替换等操作都有意想不到的作用.正因如此,正则表达式现在是作为程序员七种基本技能之一*,因此学习和使用它在工作中都能达到很高的效率. 正则表达式应用于程序设计语言中,首次是出现在 Perl 语言,这也让 Perl 奠定了正则表达式旗手的地位.现在,它已经深入到了所有的程序设计语言中,在程序设计语言中,正则表达式可以说是标准配置了. Java 中从 JDK 1.4 开始增加了对正则表达式的支持,至此正则表达式成为了 Java 中的基