Regex查找并列出字符串中任何三个字符(包括短划线和最后一个匹配项)



我的正则表达式查找三个字母加短划线,但只返回字符串中的第一个和第二个

(?:-)([A-Z]{3})+?(?:-)

我正试图找出一个正则表达式,它只查找用破折号括起来的所有三个字母,从而忽略第一个ABC

ABC-FOUR-ONE-FIVE-TWO

是否有一个regex只列出ONETWO(匹配除第一个之外的所有

您可以使用

re.findall(r'-([A-Z]{3})(?![^-])', text)

或者,其等效

re.findall(r'-([A-Z]{3})(?=-|$)', text)

查看regex演示和Python演示

图案详细信息

  • --连字符
  • ([A-Z]{3})-捕获组1:三个大写字母
  • (?=-|$)/(?![^-])-匹配(但不消耗(-或字符串末尾位置

尝试类似的(-[A-Za-z]{3}(-|$))(在https://regex101.com/)

这个正则表达式说:匹配一个破折号,然后是3个[a-Za-z]字符,最后是"-"字符或"字符串末尾">

相关内容

最新更新