遇到一个需求是需要将数据库查询语言中的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正则表达式替换一段字符串
答案:2 悬赏:30 手机版
解决时间 2021-02-21 02:37
- 提问者网友:你给我的爱
- 2021-02-20 18:50
最佳答案
- 五星知识达人网友:佘樂
- 2021-02-20 19:59
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";没问题不用改.
完整的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";没问题不用改.
全部回答
- 1楼网友:酒者煙囻
- 2021-02-20 21:21
import java.util.regex.matcher;
import java.util.regex.pattern;
public class testregex
{
public static void main( string[] args )
{
string regex = "第[0-9]*条";
string str = "第9条,数据错误,错误信息,第jjj哦条哦条我的条件如何?第221条xx";
pattern pat = pattern.compile(regex);
matcher matcher = pat.matcher(str);
while (matcher.find()) {
string temp = str.substring(matcher.start(),matcher.end());
str = str.replaceall(temp, temp.substring(0,temp.lastindexof("条"))+"行");
}
system.out.println(str);
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯