java 怎么匹配到关键字的内容 并替换到???

路是断桥边 2017-06-23 11:55:01
例如我想匹配一个sql 语句 "Select * From `#@__arcatt` order by sortid asc",里面的 From ,之后把 from替换为 abcdefgFrom,

之后的sql语句变为 "Select * abcdefgFromFrom `#@__arcatt` order by sortid asc"

请问有没有好的解决办法


我的解决办法会把所有的 不是SQL 语句的也替换掉,这不是我想要的
...全文
428 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
路是断桥边 2017-06-26
  • 打赏
  • 举报
回复
看来没有人会了啊
云墨浅殇 2017-06-23
  • 打赏
  • 举报
回复
public void text(Form from){ "Select * " +from+" `#@__arcatt` order by sortid asc" } 大概就是这样.通过你传今天的表名去查询
路是断桥边 2017-06-23
  • 打赏
  • 举报
回复
引用 9 楼 zy1404 的回复:
public static void main(String[] args) {
        String str = "Select  *  From `#@__arcatt` order by sortid asc";
        Pattern p = Pattern.compile("\\*\\s+From\\s+`#@__arcatt`");
        Matcher m = p.matcher(str);
        if(m.find()){
            System.out.println(str = m.replaceAll("*  abcdefgFrom  `#@__arcatt`"));
        }

    }
十分感谢你您回复我,但这个程序,是要读取文件夹下所有文件中包含的sql, ,我用replace 会把其他非 sql 给替换掉,我只想替换掉sql 中的 select delete 等关键字 ,上面是PHP 文件中的sql ,因为sql 语句 并不都是 固定这样的· 所以 我需要 一个更好的方法
  • 打赏
  • 举报
回复
public static void main(String[] args) {
        String str = "Select  *  From `#@__arcatt` order by sortid asc";
        Pattern p = Pattern.compile("\\*\\s+From\\s+`#@__arcatt`");
        Matcher m = p.matcher(str);
        if(m.find()){
            System.out.println(str = m.replaceAll("*  abcdefgFrom  `#@__arcatt`"));
        }

    }
路是断桥边 2017-06-23
  • 打赏
  • 举报
回复
引用 7 楼 a1554186548 的回复:
把你的文件copy出来用notepad++这种是不是好处理一点
这样的话我干嘛需要写程序???
jay逆鳞 2017-06-23
  • 打赏
  • 举报
回复
把你的文件copy出来用notepad++这种是不是好处理一点
路是断桥边 2017-06-23
  • 打赏
  • 举报
回复
引用 3 楼 yuxiangaaaaa 的回复:
可以替换的时候,FROM前后都带上空格,或者连前面的*都一起作为一个表达式,整体替换
我写的方法是读取整个文件夹下的所有文件,之后把里面的 sql 关键字 给替换掉,但这样做会把其他 和sql语句中相同的 单词给替换掉。比如 from 就会被 替换掉。,,我的目的是只替换 sql 里面的sql 关键字
路是断桥边 2017-06-23
  • 打赏
  • 举报
回复
引用 2 楼 LinBilin_ 的回复:
[quote=引用 楼主 linmo2012 的回复:] 例如我想匹配一个sql 语句 "Select * From `#@__arcatt` order by sortid asc",里面的 From ,之后把 from替换为 abcdefgFrom, 之后的sql语句变为 "Select * abcdefgFromFrom `#@__arcatt` order by sortid asc" 请问有没有好的解决办法 我的解决办法会把所有的 不是SQL 语句的也替换掉,这不是我想要的
"Select * abcdefgFromFrom `#@__arcatt` order by sortid asc" 你替换成这样有什么用?还有你的文本里面除了sql外,其他内容是什么[/quote] 我是处理一个文件,把里面所有的sql 语句,包括 select,delete 等关键字,都给替换为abcdefg* .不知道你能否理解?
路是断桥边 2017-06-23
  • 打赏
  • 举报
回复
引用 1 楼 zhou2015bo 的回复:
public void text(Form from){ "Select * " +from+" `#@__arcatt` order by sortid asc" } 大概就是这样.通过你传今天的表名去查询
我不是要写查询方法,我是把写一个处理文件的程序,把所有的关键字给加标签,select=abcdefgselect, delete=abcdefg, set = abcdrfgset 只要是sql 语句都给他加上abcdefg 或者替换为加上后的? 不知道我的表达 能否看懂?
自由自在_Yu 2017-06-23
  • 打赏
  • 举报
回复
可以替换的时候,FROM前后都带上空格,或者连前面的*都一起作为一个表达式,整体替换
  • 打赏
  • 举报
回复
引用 楼主 linmo2012 的回复:
例如我想匹配一个sql 语句 "Select * From `#@__arcatt` order by sortid asc",里面的 From ,之后把 from替换为 abcdefgFrom, 之后的sql语句变为 "Select * abcdefgFromFrom `#@__arcatt` order by sortid asc" 请问有没有好的解决办法 我的解决办法会把所有的 不是SQL 语句的也替换掉,这不是我想要的
"Select * abcdefgFromFrom `#@__arcatt` order by sortid asc" 你替换成这样有什么用?还有你的文本里面除了sql外,其他内容是什么

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧