首页 > 解决方案 > `{1}` 在正则表达式中有什么不同吗?

问题描述

这个问题中,我回答了我认为完全多余的正则表达式egrep '^qu[a-z]{1}y$' filename.txt包含的内容。{1}

在流行的正则表达式风格中是否存在任何情况(其中{n}表示“前一项完全匹配 n 次。”)添加{1}会改变行为?


这可能是有原因的,比如最初(可能在复制粘贴的代码中)有另一个数字被重新替换1或自动生成的代码等,但我不是在谈论那个。

标签: regex

解决方案


不,它不应该改变行为。任何没有量词的模式只匹配一次,量词{1}使前面的模式只匹配一次。所以它永远不应该有所作为。

我经常看到的其他多余的东西:

  1. 开始或结束一个正则表达式,.*如果它只是用于测试,而不是返回或替换匹配的部分。如果正则表达式可以匹配主题字符串中的任何位置,则测试将成功,您无需显式说明(除了某些正则表达式接口隐式锚定其模式,例如 Python 的re.match()开头匹配,HTML 的pattern属性具有隐式^$锚点)。
  2. 量化正则表达式中的最后一个模式+是否只是用于测试。如果主题字符串与至少一个模式匹配,它也将与一个完全匹配。(如上所述,如果$最后有一个隐式锚点,这不是多余的。)

推荐阅读