java正则表达式替换一段字符串
遇到一个需求是需要将数据库查询语言中的from后的所有字段全部原样取出,在from前加上selectcount(*),如下```"Selectafrom"+TbItem....
遇到一个需求是需要将数据库查询语言中的from后的所有字段全部原样取出,在from前加上select count(*), 如下
```
" Select a from " + TbItem.class.getName() + " a " + " where a.id= :id"
替换成
“ Select count(*) from " + TbItem.class.getName() + " a " + " where a.id= :id”
```
或者
```
"from Employee e where e.name = :name"
替换成
“select cout(*) from Employee e where e.name = :name”
```
因为有的语句没有select,所以要定位到from前替换 展开
```
" Select a from " + TbItem.class.getName() + " a " + " where a.id= :id"
替换成
“ Select count(*) from " + TbItem.class.getName() + " a " + " where a.id= :id”
```
或者
```
"from Employee e where e.name = :name"
替换成
“select cout(*) from Employee e where e.name = :name”
```
因为有的语句没有select,所以要定位到from前替换 展开
1个回答
展开全部
Java正则表达式 .*(from.*)$ 替换成 select count(*) $1
完整的Java替换程序如下
public class AA {
public static void main(String[] args) {
String s=" Select a from xxx a " + " where a.id= :id";
String regex = ".*(from.*)$";
String result=s.replaceAll(regex,"select count(*) $1");
System.out.println(result);
}
}
运行结果
select count(*) from xxx a where a.id= :id
因为我不知道TbItem.class.getName()方法返回的表名,所以用xxx代替.
你可以用String s=" Select a from " + TbItem.class.getName() + " a " + " where a.id= :id";没问题不用改.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询