【问题标题】:Regex with ? quantifier inside passive group?正则表达式与?被动组内的量词?
【发布时间】:2011-10-05 10:40:08
【问题描述】:

我正在为 SQL 编辑 TextMate 语法。它目前有正则表达式(为了澄清而省略了关键字):

(?i:^\s*(create)\s+(aggregate|function|(unique\s+)?index|table)\s+)(['"`]?)(\w+)\4

这与函数定义正确匹配

CREATE FUNCTION similarity

我想处理CREATE OR REPLACE,所以我将正则表达式更改为

(?i:^\s*(create(\s+or\s+replace)?)\s+(aggregate|function|(unique\s+)?index|table)\s+)(['"`]?)(\w+)\4

它不会匹配 CREATECREATE OR REPLACE。我也通过将新的可选组设为被动来修复它:

(?i:^\s*(create(?i:\s+or\s+replace)?)\s+(aggregate|function|(unique\s+)?index|table)\s+)(['"`]?)(\w+)\4

但是..为什么以前不匹配?我希望它能够匹配,但随后可能会给我一个我没有预料到的捕获组(如果外部被动组指示符没有渗透到新的内部组)。

【问题讨论】:

    标签: ruby regex oniguruma


    【解决方案1】:

    这是您的 \4--当您第一次添加新括号时,您需要将其更改为 \5。

    【讨论】:

      猜你喜欢
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 2021-07-31
      • 2011-06-29
      • 2013-12-05
      • 2012-01-23
      • 2016-03-20
      相关资源
      最近更新 更多