【问题标题】:Is it possible to test a JPA/EJB QL statement with regex?是否可以使用正则表达式测试 JPA/EJB QL 语句?
【发布时间】:2009-10-27 16:07:19
【问题描述】:

我不是正则表达式方面的专家,所以我想我会抛出这个问题。我认为正则表达式可以帮助我的测试更加健壮(测试生成的 EJB QL 语句以确保正确生成)。

例如:

select u.firstName, u.lastName from Users u where u.age > 50

我使用什么正则表达式将其拆分为以下内容?

  1. "u.firstName, u.lastName"
  2. “用户 u”
  3. “u.age > 50”

无论关键字的大小写(即 SELECT、Select、select、...)以及关键字前后可能的空格如何?当然,如果进一步拆分它会更好,但是如果我可以像上面的例子那样拆分部分,我可以改进我的测试。

提前感谢您的任何指点和帮助。

【问题讨论】:

    标签: regex unit-testing ejbql


    【解决方案1】:

    要拆分的正则表达式类似于:

     select|from|where
    

    您可以使用语言工具将正则表达式编译为不区分大小写

    //Example in java
    Pattern.compile("select|from|where",Pattern.CASE_INSENSITIVE).split("select x from y where z)
    

    【讨论】:

      【解决方案2】:

      最简单的正则表达式是这样的:

      select(.*?)from(.*?)where(.*)
      

      根据您的语言,您应该能够为正则表达式设置不区分大小写的标志。结果将是 3 个包含所需信息的捕获组(由空格包围)。在您的语言中使用trim() 或类似函数来去除多余的空格而不是使正则表达式更复杂会更容易。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-02
        • 2010-10-27
        • 1970-01-01
        • 2015-07-17
        • 1970-01-01
        • 2021-03-09
        • 2018-01-16
        • 1970-01-01
        相关资源
        最近更新 更多