正则

来源:互联网 发布:淘宝定金是什么意思 编辑:程序博客网 时间:2024/06/06 09:21

1.基本正则标记

package com.wjx.sayHello;public class RegexTestDemo {public static void main(String[] args) {/* 1.描述单个字符  * x:表示单个字符x * \\:匹配“\” * \t :描述制表符 *  \n:表示换行 * */System.out.println("a".matches("a"));System.out.println("\\".matches("\\\\"));/* 2.描述一个范围  */// [abc] : 表示字母abc中的任意一个// [^abc] : 表示字母abc中的任意一个// [0-9] : 表示'0'~'9'由数字组成,即字符是0~9的数字组成的 // [a-zA-Z] : 表示不区分大小写a~zSystem.out.println("a".matches("[abc]"));System.out.println("x".matches("[^abc]"));System.out.println("1".matches("[0-9]"));System.out.println("V".matches("[a-zA-Z]"));/* 3.单个简化表达式  * "." 表示任意一个字符 * \d  等价与[0-9] * \D  等价与[a-zA-Z] * \s  表示一位空格,可能是空格、\t,\n * \S  表示不是一位空格 * \w  等价于字符数字下划线  [a-zA-Z0-9_] * \W  等价于不是字符数字下划线  [^a-zA-Z0-9_] *  */System.out.println("a".matches("."));System.out.println("1".matches("\\d"));System.out.println("D".matches("\\D"));System.out.println("\t".matches("\\s"));System.out.println("_".matches("[a-zA-Z0-9_]"));/* 4.边界匹配(Java 用不到,在js使用) */// ^ :表示正则的开始// $ :表示正则的结束/* 5.数量表达式,需要重复出现N次 * ? :出现0次或者一次 * + :出现一次或者多次 * * :出现0次,1次或者多次 * {n}:出现n次 * {n,}:出现大于等于n次 * {n,m}:出现大于等于n,小于等于 m次 *  */System.out.println("".matches("[a-z]?"));System.out.println("asa".matches("[a-z]+"));System.out.println("".matches("[a-z]*"));System.out.println("12312".matches("[0-9]{5}"));System.out.println("1231223".matches("[0-9]{5,}"));System.out.println("1231223".matches("[0-9]{5,10}"));/* 5.数量表达式,需要重复出现N次 * 正则A正则B:表示与的关系,第一个匹配之后立即匹配第二个 * 正则A|正则B:表示正则A或者正则B出现一次 * (正则):按照一组正则进行处理 * */}}

2.String对正则的支持

package com.wjx.sayHello;import java.text.SimpleDateFormat;import java.util.regex.Matcher;import java.util.regex.Pattern;public class StringRegexTestDemo {public static void main(String[] args) throws Exception {//提取字符串中所有字母(将字符串所有非字母用空代替)String str="DSNI212312ss312feq23";String regex="[^a-zA-Z]";System.out.println(str.replaceAll(regex, ""));// 字符串拆分String regex1="\\d+";//[0-9]String str1="a1b22c333d4444e555555fqweqw312dse12e";String  result[]=str1.split(regex1);for(int x=0;x<result.length;x++){System.out.print(result[x]+"、");}System.out.println();//字符验证//1.验证一个字符串是否为数字,如果是数字,全部double输出String str2="12311.1213";String regex2="\\d+(\\.\\d+)?";//验证是否为数字,可以为小数可以不为小数if(str2.matches(regex2)){double data=Double.parseDouble(str2);System.out.println(data);}elseSystem.out.println("输入数字中包含非数字字符");//2.要求验证一个字符串是否为日期或者日期时间,如果是则将其变为Date类型 String str3 = "2016-01-03 02:03:11"; String regex3="\\d{4}-\\d{2}-\\d{2}"; if(str3.matches(regex3)){ System.out.println(new SimpleDateFormat("yyyy-MM-dd").parse(str3)); }else if(str3.matches("\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}")){ System.out.println(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(str3)); }  //3.现在要求判断给定的电话号码是否正确(用一个正则表示) //电话格式一:51283382 //电话格式二:01051283382 //电话格式一: (010)-51283382   String str4="(0513)-51235567"; String regex4="((\\(\\d{3,4}\\)-)|(\\d{3,4}))?\\d{7,8}";// 自己组合吧 if(str4.matches(regex4)){ System.out.println("号码正确"); }else System.out.println("号码不符合");  //4.验证emali地址  String str5="Lw88java.v_-ww@njmind-java.com"; String regex5="[a-zA-Z][a-zA-Z_\\-\\.0-9]{4,14}@[a-zA-Z_\\-\\.0-9]+\\.(cn|com|net)"; if(str5.matches(regex5)){ System.out.println("邮箱正确"); }else System.out.println("邮箱不正确");  // java.util.regex.Pattern包  String str6="a|B|c";  String regex6="\\|";  Pattern pat=Pattern.compile(regex6);  String result6[]=pat.split(str6);  for(int i=0;i<result6.length;i++){  System.out.println(result[i]);  }  //java.util.regex.Matcher 负责分组的时候需要使用  String str7="INSERT INTO member(name,age,sex) values(#{member.name},#{member.age},#{meeber.sex})";  String regex7="#\\{[a-zA-Z_0-9\\.]+\\}";  Pattern pat7=Pattern.compile(regex7);  Matcher mat=pat7.matcher(str7);  while(mat.find()){  System.out.println(mat.group(0));  }      }}