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

发布于 2024-08-08 15:40:48 字数 426 浏览 8 评论 0原文

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

例如:

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

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

  1. "u.firstName, u.lastName"
  2. "Users u"
  3. "u.age > 50"

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

预先感谢您的任何指示和帮助。

I'm not an expert on regular expressions so I thought I'd throw this question out. I'm thinking regular expressions can help make my tests more robust (testing generated EJB QL statements for correct generation).

For example:

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

What regex do I use to split it into the following?

  1. "u.firstName, u.lastName"
  2. "Users u"
  3. "u.age > 50"

regardless of the case of the keywords (i.e. SELECT, Select, select, ...) and regardless of the possible spaces before and after the keywords? Of course it would be even better to split it further, but if I can split parts as above example, I can improve my tests.

Thanks in advance for any pointers and help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

剪不断理还乱 2024-08-15 15:40:48

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

 select|from|where

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

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

The regex to split would be something like:

 select|from|where

you can use the lanaguage s tool to compile regex to be non case sensitive

//Example in java
Pattern.compile("select|from|where",Pattern.CASE_INSENSITIVE).split("select x from y where z)
静赏你的温柔 2024-08-15 15:40:48

最简单的正则表达式类似于:

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

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

The easiest regex would be something like:

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

Depending on your language you should be able to set flags for regex to be case insensitive. The result of it will be 3 captured groups that contain required information (surrounded by spaces). It would be easier just to use trim() or similar function in your language to strip unneded spaces rather than making regex more complex.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文