我试图简单地在冒号之后获取所有内容:
hfarnsworth:204b319de6f41bbfdbcb28da724dda23
然后在下面的空格之前的所有内容:
29ca0a80180e9346295920344d64d1ce ::: 25basement
这就是我所拥有的:
for line in f:
line = line.rstrip() #to remove \n
line = re.compile('.* ',line) #everything before space.
print line
任何指示我指向正确方向的提示?谢谢!
另外,如果我想要返回匹配的字符串,请重新编译正确的函数吗?我也是python的新手。 谢谢!
答案 0 :(得分:4)
string = "hfarnsworth:204b319de6f41bbfdbcb28da724dda23"
print(string.split(":")[1:])
string = "29ca0a80180e9346295920344d64d1ce ::: 25basement"
print(string.split(" ")[0])
答案 1 :(得分:3)
首先,您应该仔细查看re.compile
的文档。它不希望第二个参数成为要查找的字符串。尝试使用re.search
或re.findall
。 E.g:
>>> s = "29ca0a80180e9346295920344d64d1ce ::: 25basement"
>>> re.findall('(\S*) ', s)[0]
'29ca0a80180e9346295920344d64d1ce'
>>> re.search('(\S*) ', s).groups()
('29ca0a80180e9346295920344d64d1ce',)
顺便说一下,这不是正则表达式的任务。考虑使用一些简单的字符串操作(如split
)。
答案 2 :(得分:0)
这个正则表达似乎有用
r"^(?:[^:]*\:)?([^:]*)(?::::.*)?$"