Python正则表达式检查两个离散值的字符串长度

我正在尝试检查一个字符串的长度可以是 3 或 6 的模式;不是它们之间的值。

这是字符串:

color: #FfFdF8; background-color:#aef;

我想获取所有#以十六进制代码开头的子字符串,如果它们的长度为 3 或 6 并且不位于字符串的开头;在这种情况下,两者都#FfFdF8应该#aef被退回。

我写了这个模式:

r'^(?!#).+(#[a-fA-F0-9]{6}).*|^(?!#).+(#[a-fA-F0-9]{3}).*'

但它给了我[('#FfFdF8', '')]作为结果re.findall


当年话下
浏览 114回答 1
1回答

HUX布斯

您可以首先检查字符串是否以开头,#如果不是,则提取#...子字符串:import reresults = []s = 'color: #FfFdF8; background-color:#aef;'if not s.startswith('#'):     results = re.findall(r'#[a-fA-F0-9]{3}(?:[a-fA-F0-9]{3})?\b', s)print(results) # => ['#FfFdF8', '#aef']请参阅正则表达式演示和Python 演示。正则表达式详细信息#- 一个#字符[a-fA-F0-9]{3}- 3 个十六进制字符(?:[a-fA-F0-9]{3})?- 三个十六进制字符的可选序列\b- 一个单词边界(右边不再有十六进制字符)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python