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前替换
展开
 我来答
紫薇参星
科技发烧友

2017-08-11 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3575万
展开全部

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";没问题不用改.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式