无法理解此正则表达式的输出

2024-04-20 03:53:56 发布

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

我正在尝试创建一个正则表达式来捕获字符串文本中的所有十六进制颜色。我使用的是Python3,这就是我所拥有的:

import re
pattern = re.compile(r"#[a-fA-F\d]{3}([a-fA-F\d]{3})?")

但是,当我在#abcdef上应用findallregex方法时,我得到的是:

>>> re.findall(pattern,"#abcdef") 
["def"] 

有人能解释一下为什么我有这个吗?我真的需要得到["#abcdef"] 先谢谢你


Tags: 方法字符串文本importre颜色defpython3
2条回答

根据http://regex101.comRegex Description

看起来这个正则表达式在寻找

#(三个字符a到f、a到f或一个数字)(三个字符a到f、a到f或一个数字,可能存在,也可能不存在,如果存在,则是从匹配中返回的)

如果您希望匹配上述整个字符串的任何实例,我建议您改为:

#[a-fA-F\d]{6}enter image description here

多亏了Andrej Kesely,我得到了问题的答案,那就是:

Regex will return capturing group.

要绕过此问题,只需将regex从:

r"#[a-fA-F\d]{3}([a-fA-F\d]{3})?"

收件人:

r"#[a-fA-F\d]{3}(?:[a-fA-F\d]{3})?"

相关问题 更多 >