我试图简单地获取以下冒号后面的所有内容:
hfarnsworth:204b319de6f41bbfdbcb28da724dda23
然后在空间之前的所有内容如下:
29ca0a80180e9346295920344d64d1ce ::: 25basement
这是我的:
for line in f:
line = line.rstrip() #to remove n
line = re.compile('.* ',line) #everything before space.
print line
有什么建议可以为我指明正确的方向吗?谢谢
此外,如果我想返回匹配的字符串,re.compile是正确的函数吗?我对python也很陌生。谢谢
string = "hfarnsworth:204b319de6f41bbfdbcb28da724dda23"
print(string.split(":")[1:])
string = "29ca0a80180e9346295920344d64d1ce ::: 25basement"
print(string.split(" ")[0])
首先,您可能应该仔细查看re.compile
的文档。它不希望第二个参数是要查找的字符串。尝试使用re.search
或re.findall
。例如:
>>> s = "29ca0a80180e9346295920344d64d1ce ::: 25basement"
>>> re.findall('(S*) ', s)[0]
'29ca0a80180e9346295920344d64d1ce'
>>> re.search('(S*) ', s).groups()
('29ca0a80180e9346295920344d64d1ce',)
顺便说一句,这不是正则表达式的任务。考虑使用一些简单的字符串操作(如split
)。
这个正则表达式似乎可以使用
r"^(?:[^:]*:)?([^:]*)(?::::.*)?$"