为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

当年话下 2022-06-22 17:47:29
我正在尝试检查一个字符串的长度可以是 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。
查看完整描述

1 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

您可以首先检查字符串是否以开头,#如果不是,则提取#...子字符串:


import re

results = []

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- 一个单词边界(右边不再有十六进制字符)


查看完整回答
反对 回复 2022-06-22
  • 1 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信