代码之家  ›  专栏  ›  技术社区  ›  aberrant80

是否可以用regex测试jpa/ejb-ql语句?

  •  1
  • aberrant80  · 技术社区  · 16 年前

    我不是正则表达式专家,所以我想把这个问题抛到一边。我认为正则表达式可以帮助我的测试更加健壮(测试生成的EJBQL语句以正确生成)。

    例如:

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

    我应该使用什么regex将其分为以下几部分?

    1. “u.firstname,u.lastname”
    2. “用户U”
    3. 《美国时代》第50页

    不管关键字的大小写(即select、select、select,…),也不管关键字前后可能有多少空格?当然,进一步拆分它会更好,但是如果我可以像上面的示例那样拆分部分,我可以改进我的测试。

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

    2 回复  |  直到 16 年前
        1
  •  1
  •   Jaskirat    16 年前

    要拆分的regex如下所示:

     select|from|where
    

    可以使用lanaguage s工具将regex编译为不区分大小写

    //Example in java
    Pattern.compile("select|from|where",Pattern.CASE_INSENSITIVE).split("select x from y where z)
    
        2
  •  1
  •   serg    16 年前

    最简单的正则表达式如下:

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

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