java正则表达式替换一段字符串

遇到一个需求是需要将数据库查询语言中的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前替换

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";没问题不用改.

温馨提示:答案为网友推荐,仅供参考
相似回答