【问题标题】:Perl match abba patternPerl 匹配 abba 模式
【发布时间】: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

标签: regex perl


【解决方案1】:

你的模式中有一个流浪的q

$ perl -le'print "found" if "abba" =~ /(.)(?!\g1)(.)\g2\g1/;'
found

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    相关资源
    最近更新 更多