我正在尝试针对此模式测试字符串:"至少一对方括号,换行两位,然后至少租用一个字符"。 例如,[11][22][33]dd应该匹配,而[11][22][33]不应该匹配。

我已经尝试过此正则表达式:(\\[\\d{2}])+.+。 但是,当使用[11][22][33]对它进行测试(应该会失败)时,它仍会通过该测试。 第一个+量词仅匹配两组[11][22],而其余部分[33].+匹配。

我认为+量词的"贪婪"行为会耗尽它所修改组的所有匹配段; 但是,正则表达式引擎似乎会将"用尽所有匹配可能性"原则置于"贪婪量词"规则之上,而不是我期望的方式。

我应该如何实现我的目标?

(此问题实际上与语言无关,尽管标记为" golang",这是我当前使用的语言。)


您可以使用

(?:\\[\\d{2}])+(.*)模式匹配1+次出现的[,2位数字和],然后将除换行符以外的0个或多个字符捕获到组1中。然后,如果找到匹配项(if len(match) > 1), 如果组1值不为空(match[1] !=""),则应返回true,否则,将返回false

请参阅Go演示:

输出:


我需要使用的正则表达式是这样的: