我的正则表达式查找三个字母加短划线,但只返回字符串中的第一个和第二个
(?:-)([A-Z]{3})+?(?:-)
我正试图找出一个正则表达式,它只查找用破折号括起来的所有三个字母,从而忽略第一个ABC
ABC-FOUR-ONE-FIVE-TWO
是否有一个regex只列出ONE
和TWO
(匹配除第一个之外的所有
您可以使用
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]字符,最后是"-"字符或"字符串末尾">