用正则表达式进行字符串校验,截取十分方便,项目开发中灵活的使用正则表达式能让你的代码简洁优雅并且不易出错。在实际的应用中,掌握以下几点知识就可以应付绝大多数的开发场景了。
1、 字符串开始结束匹配:^$。
^abc$完全匹配字符串abc。
2、 特定类型字符匹配:数字d,数字字母下划线w,空格s,任意字符.。
3、 重复匹配:重复0次或1次?,重复1次及以上+,重复0次及以上*,重复m到n次{m,n},重复m次以上{m,}。
d+表示有一个或多个数字组成的字符串,比如0,10,110。
4、 单个字符或[],|。
[ab]表示a或b,a|b表示a或b。
5、 字符串或(|)。
(ab|bc)表示ab或者bc。
6、 非[^]。
[^a]表示不是a的一个字符;[^ab]表示不是a且不是b的一个字符;[^ab]+表示一个或多个字符,且每个字符都不是a或b。
Java中,String.matches(regex)进行字符串正则表达式校验;String.replaceAll()进行正则表达式替换;Pattern,Matcher则可以进行正则表达式匹配,查找,替换等一系列操作。下面是代码实例:
package com.coshaho.learn.reg; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexTest { public static void main(String[] args) { // 重复 String regex = "^\s*\d+{1,3}\w+ .?$"; String str = " 110hkx_ @"; System.out.println(str.matches(regex)); // 字符或 regex = "^[abc]$"; // 等价于^a|b|c$ str = "b"; System.out.println(str.matches(regex)); // 字符串或 regex = "^(ab|cd)$"; str = "ab"; System.out.println(str.matches(regex)); // 非 regex = "^[^abc]$"; str = "d"; System.out.println(str.matches(regex)); regex = "\[([^\[\]]+)\]\.\[([^\[\]]+)\]"; str = "[device].[cpu] + [interface].[tranffic] >= 2"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); while(matcher.find()) { System.out.println(matcher.group()); if(2 == matcher.groupCount()) { System.out.println(matcher.group(1)); System.out.println(matcher.group(2)); } } regex = "\d+"; str = "abc123def456hijk789xyz"; System.out.println(str.replaceAll(regex, " ")); } } /** 输出值 true true true true [device].[cpu] device cpu [interface].[tranffic] interface tranffic abc def hijk xyz **/