是否可以使用正则表达式测试JPA / EJB QL语句?

时间:2009-10-27 16:07:19

标签: regex unit-testing ejbql

我不是正则表达的专家,所以我想我会抛出这个问题。我认为正则表达式可以帮助我使测试更加健壮(测试生成的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”
  4. 无论关键字的情况如何(即SELECT,Select,select,...),无论关键字之前和之后的可能空格如何?当然,将它进一步拆分会更好,但如果我可以像上面那样拆分部件,我可以改进我的测试。

    提前感谢任何指示和帮助。

2 个答案:

答案 0 :(得分:1)

要拆分的正则表达式将是:

 select|from|where

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

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

答案 1 :(得分:1)

最简单的正则表达式将是:

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

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