python regexp 3同一对[09aff]

2024-09-28 18:54:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一些颜色的正则表达式,可以这样描述:

开始于# 然后3对相同的十六进制字符(0-9,a-f,a-f)。aA和aA也是同一对

现在我有了#(([0-9A-Fa-f]){2}){3}

如何为相同的十六进制字符对生成regexp?在

匹配字符串的一些示例: “#ffffffff”, “#000000”, “#AAAAA”, “#050505”, “####93#0b0B0b1B34”

像“#000100”这样的字符串不应该匹配


Tags: 字符串示例颜色字符faaaregexpaaaaa
2条回答

您可以将以下正则表达式与捕获组和反向引用一起使用:

#([0-9A-Fa-f]{2})\1{2}

参见regex demo

详细信息

  • #-a#
  • ([0-9A-Fa-f]{2})-第1组:2个十六进制字符
  • \1{2}-2连续出现与第1组相同的值。在

注意:为了使\1backreference以不区分大小写的方式匹配第1组的内容,需要使用不区分大小写的标志。请记住,我们需要使用原始字符串文本来定义正则表达式,以避免跳过反向引用。在

请参见Python demo

^{pr2}$

结果:

^{3}$

使用re.search()函数:

import re

s = '#aAAaaA'
match = re.search(r'#([0-9a-z]{2})\1\1', s, re.I)
result = match if not match else match.group()

print(result)

  • \1-指向第一个带圆括号的组(...)

  • re.I-IGNORECASEregex标志

相关问题 更多 >