【发布时间】:2016-12-10 12:58:33
【问题描述】:
我在 Perl 脚本中有一个子例程,如果传递给它的字符串包含任何 4 个字符,这些字符与内部对 'abba'、'baab'、'acca' 周围的外部对的模式匹配,则该子例程应该返回 true , 等等。它不应该匹配“aaaa”。我不明白为什么正则表达式不起作用。我希望以下内容应该打印“找到”,但事实并非如此。
print 'found' if 'abba' =~ /(.)q(?!\g1)(.)\g2\g1/;
我的正则表达式有什么问题?
【问题讨论】:
-
你知道,你真的不应该在 SO 上寻找正则表达式高尔夫答案。这有点作弊:P
-
@SebastianLenartowicz 这不是正则表达式高尔夫,但这是我可能不应该查找的答案:)。查看 Advent of Code 的谷歌搜索结果。
-
你也可以这样写你的模式:
(.)\1*+(.)\2\1