java核心技术之正则表达式
来源:互联网 发布:提花图案软件 编辑:程序博客网 时间:2024/05/16 00:43
1.正则表达式
正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE)。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串
2.元字符:
3.方括号
方括号括起来若干个字符来表示一个元字符,该元字符可代表方括号中的任何一个字符。
reg=“[abc]4”—– 则”a4”,”b4”,”c4”,都是和此正则表达式匹配的字符串
4.()–小括号
将 () 之间括起来的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域,这个元字符在字符串提取的时候非常有用。
5.限定修饰符
使用限定修饰符来限定元字符出现的次数
6.几个样例
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}+”;
//字符串是否是15位或18位的身体证号码
public static String regexIsID=”\d{15}|\d{18}”;
//字符串是否是JJJ开头KKK结尾
public static String regexIsJJJStartKKKEnd=”^JJJ.*KKK$”;
//字符串是否是区号是3或4位数字-(可有可没有)号码任意多少位的数字
public static String regexIsTelePhoneNumber =”[0-9]{3,4}\-?[0-9]+”;
//X@X.com.cn
public static String regexIsEmail = “\w+@\w+(\.\w{2,3})*\.\w{2,3}”;
//字符串是否是汉字
public static String regexIsHanZi=”[\u4e00-\u9fa5]{1,}”;
//查找以Java开头,任意结尾的字符串
public static String regexIsStartJava = “^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("aaa@",regexIsEmail); pressInfo("aaaaaaaa",regexIsEmail); pressInfo("11111@11111fffyu.dfg.com",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); } }
}
7自己的话
曾经,看到别人能用正则表达式,而自己不会,当时好自卑啊,觉得别人好厉害啊。直到后来,自己坐下来,好好的看了一些正则表达式的资料和例子后,觉得,啊,原来如此。也就是这样,一点都不复杂啊。绝知此事要躬行,古人的话还是有道理的。
- java核心技术之正则表达式
- java核心技术正则表达式
- Java正则表达式(摘自<<Java核心技术>>)
- PHP核心技术与最佳实践之正则表达式匹配规则
- PHP核心技术与最佳实践之正则表达式反向引用
- Java之正则表达式
- Java之正则表达式
- Java之正则表达式
- java之正则表达式
- JAVA之正则表达式
- Java 之正则表达式
- java之正则表达式
- java 之 正则表达式
- java之正则表达式
- Java之正则表达式
- Java之正则表达式
- java之正则表达式
- Java之正则表达式
- Android studio 导入 Slidingmenu的问题
- 最小生成树【模板】
- Android客户端与PHP服务端通信(三)---极光推送注册使用
- 有关J2se创建web应用环境搭建的一些问题
- AS3中,二进制转成十进制和八进制、十六进制相互转换
- java核心技术之正则表达式
- C与C++中内存分配释放-malloc,free,new,delete
- 选择性重传协议(基于Opnet)
- 次小生成树【模板】
- Step into MongoDB - 14 - 分片
- 滑动窗口协议(基于Opnet)
- JAVA面试题
- 回退n帧协议(基于Opnet)
- 浙大 ZOJ 1002 Fire Net