public class RegexTest {
public static void main(String[] args) {
Pattern pattern=Pattern.compile("(\\d{3})(\\d{1})"); //一旦编译,任何地方皆可使用
Matcher matcher=pattern.matcher("111222");
while (matcher.find()) {
//若group参数为空,则返回整个匹配串,
// 否则,从1开始,按括号位置从左到右,作为参数,取出相应括号的内容
System.out.println(matcher.group(2));
}
System.out.println("-------------------------");
//字符串是否满足表达式
System.out.println(Pattern.compile("\\d(.|\n)*").matcher("2\n").matches());
System.out.println("-------------------------");
String input="This!!unusual use!!of exclamation!!points";
System.out.println(Arrays.asList(
Pattern.compile("!!").split(input)));
//其实这样做是麻烦的,直接使用 "我是一个测试的字符串".split("!!")就能得到结果
System.out.println("-------------------------");
Matcher m2=Pattern.compile("[frb][aiu][gx]")
.matcher("fix the rug with bags");
while (m2.find())
System.out.println(m2.group());
m2.reset("fix the rig with rags"); //重置匹配字符串
while (m2.find())
System.out.println(m2.group());
System.out.println("m2-------------------------");
}
/** * 替换字符串中的一些有固定规律的字符串,并根据其内容重新组合字符串 * 如: * "one cat two cat12 in the yard"; * 换成: * one cbt two cbt22 in the yard * @param charSeq * @return */
public static StringBuffer changeReplaceString(String charSeq) { // String charSeq = "one cat two cat12 in the yard"; Pattern p = Pattern.compile("cat\\d*"); Matcher m = p.matcher(charSeq); StringBuffer sb = new StringBuffer(); //字符串的替换 while (m.find()) { //获取匹配到的字符串 String myFind = m.group(); /* 将字符串进行一定的替换,我们为什么没有使用 m.replaceAll("dog") 呢? 因为它不能把获取到的字符串进行一个有规则的2次替换 比如我想把 cat12,换成cat22,而cat保持不变 由于java对拉姆达和闭包函数支持性的问题,想做到这一点,会有很多代码生成*/
m.appendReplacement(sb, myFind.replace("a", "b").replace("1", "2")); } m.appendTail(sb); System.out.println(sb.toString()); // 结果: one cbt two cbt22 in the yard return sb;
} /** * 正则表达式快速替换 */ public static void quickReplace() { String str = "正则表达式 Hello World,正则表达式 Hello World"; Pattern pattern = Pattern.compile("正则表达式"); Matcher matcher = pattern.matcher(str); //替换第一个符合正则的数据 System.out.println(matcher.replaceAll("Java")); System.out.println(matcher.replaceFirst("Java")); System.out.println("--------"); //replaceAll的第一个参数可以传正则表达式,其实下面的代码更简便 System.out.println(str.replaceAll("正则表达式","Java")); System.out.println(str.replaceFirst("正则表达式","Java")); }