java - 我的正则表达式试图修复无效的 SQL 有什么问题?

标签 java regex

在某些情况下,我会遇到无效的 SQL 查询

select
        foo  as foo,
        bar  as bar,
    from
      ...

注意 from 之前的逗号。

现在我认为用正则表达式可以很容易地检测到 from 之前的逗号并替换它...

我尝试过

query.replaceAll("(?s)\\, *\\n* *from", "(\\n) from")
  • 可能有多个断行,这解释了 \\n*
  • 逗号后面可以有多个空格,这解释了 \\, *
  • from 之前可以有空格,这解释了 *from

现在,我尝试用断行线替换它,后跟 from,如您所见。

但是没有任何东西被替换,我错过了什么?

最佳答案

,\s*from

试试这个。替换为 \nfrom。请参阅演示。

http://regex101.com/r/rQ6mK9/26

编辑:由于它被标记为 Java,因此使用 System.getProperty("line.separator") + "from" 进行替换,而不是 \nfrom .

关于java - 我的正则表达式试图修复无效的 SQL 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26491216/

相关文章:

java - 运动 : What is the best/safe way to shutdown a worker?

java - 强制急切初始化 Tomcat 处理的数据源

java - 从 Multimap 获取键和值

python - 如何在不同的分隔符上拆分字符串,但保留某些所述分隔符的输出? (标记字符串)

java - 如何使用 java String.replaceAll(string regex,string replacement) 来得到我想要的?

Java正则表达式点与真正的点字符(.)不匹配

Java SimpleDateFormat 不会使用 setLenient(false) 解析 2013 年的特定时间

java - 当我使用 java.lang.instrument.Instrumentation#redefineClasses() 时,我应该将数组传递给函数吗?

regex - 理解 sed 命令中的正则表达式

java - String.replaceAll 比自己完成工作要慢得多