为什么我的Python 3.5 re.match()在grep -e工作时返回None?

时间:2017-05-26 12:37:53

标签: python svg

我试图解析部分SVG文件以获得HEX填充颜色(如#ceff80等)

当我使用Bash grep命令执行此操作时:

grep -o -e "fill:#[a-f, 0-9]*;" Sample.svg

结果如下:

fill:#000000;
fill:#ff0000;
fill:#ff9955;
fill:#ff9955;
fill:#ffffff;
fill:#ff0000;
fill:#800080;
fill:#666666;
fill:#666666;
fill:#00ff00;

但是当我尝试使用Python的re模块时,我得到了None

import re
color = re.match(r'fill:#[a-f, 0-9]*;', style)

这是在使用ElementTree遍历XML结构的循环内调用的。 style字符串包含如下值:

font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter5107)

我想提取填充:#xxxxxx;然后使用[6:-1]范围表达式将其截断以进行进一步处理。

由于某种原因,它总是返回None类型的对象。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您应该使用re.search()代替re.match()

re.match()仅检查字符串是否与RegExp完全匹配,因此如果开头的任何内容都是意外的,那么它就会失败。