首页 > 解决方案 > 正则表达式中的空字符串有什么作用?

问题描述

我有以下代码行,我不太确定输出会是什么。我发现sys.path第一个索引是空字符串。我认为这意味着添加path1/path2sys.path不确定我为什么需要' '?我正在使用python 2.7。谢谢!

extracting_paths = re.findall('.*path1/path2/.*', ' '.join(sys.path))

标签: pythonpython-2.7

解决方案


extracting_paths = re.findall('.*path1/path2/.*', ' '.join(sys.path))

实际上应该而不是连接路径名然后匹配应该分别匹配每个路径名:

pat = re.compile('.*path1/path2/.*')
extracting_paths = filter(pat.match, sys.path)

如果你想要字符串和每个字符串中匹配的位置,可以使用

extracting_paths = filter(lambda t: t[1], zip(sys.path, map(pat.findall, sys.path)))

这两者都更安全,因为它们不假设带内分隔符。


推荐阅读