Pattern Matcher


package test;

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

public class Test1 {

public static void main(String[] args) {
String hql = " from Users abc by type order by id abc limit 0,3";
removeOrders(hql);
}

/**
* 使用Matcher.appendReplacement(String str1, String str2)时要注意,最好这样用:
Matcher.appendReplacement(String str1, String str2.replaceAll("\\\\", "\\\\\\\\").replaceAll("\\$", "\\\\\\$"));

1replaceAll("\\\\", "\\\\\\\\")是为了把"\"符号加上,如果不进行这部处理,"\"符号就会被删除!
2replaceAll("\\$", "\\\\\\$")是为了把"$"符号转义,因为"$"后加数字是表示第几组的意思!

* @param hql
* @return
*/
private static String removeOrders(String hql){
// Assert.hasText(hql);
Pattern p=Pattern.compile("abc",Pattern.CASE_INSENSITIVE);
Matcher m=p.matcher(hql);
StringBuffer sb=new StringBuffer();
//find()方法表示是否有符合的字符串,group()方法则可以将符合的字符串返回
while(m.find()){
System.out.println(m.group());
//将当前匹配子串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个StringBuffer对象里。
//appendReplacement方法先添加字符串中从当前位置到下一个 匹配位置之间的所有字符,然后添加替换值。
m.appendReplacement(sb,"ttitfly");
System.out.println(sb.toString());
}
//将最后一次匹配工作后剩余的字符串添加到一个StringBuffer对象里。
//appendTail添加的 是字符串中从最后一次匹配的位置之后开始,直到结尾的部分
m.appendTail(sb);
System.out.println(sb.toString());
return sb.toString();

}
}


输出结果:
abc
from Users ttitfly
abc
from Users ttitfly by type order by id ttitfly
from Users ttitfly by type order by id ttitfly limit 0,3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值