python中的简单regex



我试图简单地获取以下冒号后面的所有内容:

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.searchre.findall。例如:

>>> s = "29ca0a80180e9346295920344d64d1ce ::: 25basement"
>>> re.findall('(S*) ', s)[0]
'29ca0a80180e9346295920344d64d1ce'
>>> re.search('(S*) ', s).groups()
('29ca0a80180e9346295920344d64d1ce',)

顺便说一句,这不是正则表达式的任务。考虑使用一些简单的字符串操作(如split)。

这个正则表达式似乎可以使用

r"^(?:[^:]*:)?([^:]*)(?::::.*)?$"

最新更新