1

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

例如:

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

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

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

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

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

4

2 回答 2

1

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

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

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

于 2009-10-27T16:48:21.983 回答
1

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

 select|from|where

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

//Example in java
Pattern.compile("select|from|where",Pattern.CASE_INSENSITIVE).split("select x from y where z)
于 2009-10-27T16:18:03.170 回答