所以我有以下正则表达式:
(?<!\.)\b([\w\@\-]+) *\b(IN|NOT IN|LIKE|NOT LIKE|BETWEEN|REGEXP|NOT|IS|XOR)+\b *
我希望帮助我匹配一些 SQL 代码。
但是,看起来我会对第二个括号中的短语有问题,例如“NOT IN”和“NOT LIKE”
我需要一个匹配或不匹配的正则表达式(没有像我当前的正则表达式那样的部分匹配)。
customers.id NOT IN (SELECT MAX(customers_service.customer_id))
根本不应该匹配customers.id NOT LIKE (SELECT MAX(customers_service.customer_id))
根本不应该匹配id NOT IN (SELECT MAX(customers_service.customer_id))
应该匹配id IN (SELECT MAX(customers_service.customer_id))
应该匹配
我正在使用 RegexBuddy 进行检查,并使用我的正则表达式获得了第 1 和第 2 的匹配项。
还,
id NOT IN (SELECT MAX(customers_service.customer_id))
只匹配id NOT
,而不是id NOT IN
id NOT LIKE (SELECT MAX(customers_service.customer_id))
只匹配id NOT
,而不是id NOT LIKE
我想修改这个正则表达式来捕捉后面否定的条件,以及第二个括号中的确切短语,或者根本不匹配(不匹配)。
我怎样才能完成这项工作?