gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:08:00 30 4
gpt4 key购买 nike

我正在尝试检查字符串中的模式,其长度可以是 3 或 6;不是他们之间的值(value)观。

这是字符串:

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

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

我写了这个模式:

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

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

最佳答案

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

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']

请参阅regex demoPython demo .

正则表达式详细信息

  • # - 一个 # 字符
  • [a-fA-F0-9]{3} - 3 个十六进制字符
  • (?:[a-fA-F0-9]{3})? - 三个十六进制字符的可选序列
  • \b - 字边界(右侧不允许有更多十六进制字符)

关于Python正则表达式检查两个离散值的字符串长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58351795/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com