gpt4 book ai didi

java - 用于验证 SQL 的正则表达式

转载 作者:行者123 更新时间:2023-11-29 11:28:50 26 4
gpt4 key购买 nike

我正在编写一个正则表达式来验证在创建新表时定义 INDEX、KEY 和 UNIQUE 时是否应该给出名称。一些有效的语法是

KEY `id` (`id`),     
INDEX name (`name`),
UNIQUE idx (`id`),
UNIQUE KEY name (`name`),

无效语法

UNIQUE KEY (`name`),   
INDEX (`designation`),
UNIQUE (`status`),

因为定义它们时没有提供名称。

我想出了一个像这样的正则表达式

(?i)(?:UNIQUE\s+KEY|UNIQUE\s+INDEX|KEY|INDEX|UNIQUE)\s*`?\w+`?\s*\(

但是很匹配

UNIQUE KEY (`name`),

还有。无论如何,我可以改进正则表达式以使其不匹配上面的字符串吗?

最佳答案

您可以在第一个 UNIQUE 之后添加一个负前瞻,以便它会尝试第二个 OR,然后才匹配 UNIQUE KEY。

(?i)(?:INDEX|UNIQUE(?! KEY)|UNIQUE KEY|KEY)\s+\W?[\w ]+\W?\s+\(\W?[\w ]+\W?\)

反之亦然,如果您想找到您指出无效的无名内容:

(?i)(?:INDEX|UNIQUE(?! KEY)|UNIQUE KEY|KEY)\s+\(\W?[\w ]+\W?\)

关于java - 用于验证 SQL 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37756662/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com