python中的简单正则表达式

时间:2012-02-03 11:37:08

标签: 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

任何指示我指向正确方向的提示?谢谢!

另外,如果我想要返回匹配的字符串,请重新编译正确的函数吗?我也是python的新手。 谢谢!

3 个答案:

答案 0 :(得分:4)

string = "hfarnsworth:204b319de6f41bbfdbcb28da724dda23"
print(string.split(":")[1:])
string = "29ca0a80180e9346295920344d64d1ce ::: 25basement"
print(string.split(" ")[0])

答案 1 :(得分:3)

首先,您应该仔细查看re.compile的文档。它不希望第二个参数成为要查找的字符串。尝试使用re.searchre.findall。 E.g:

>>> s = "29ca0a80180e9346295920344d64d1ce ::: 25basement"
>>> re.findall('(\S*) ', s)[0]
'29ca0a80180e9346295920344d64d1ce'
>>> re.search('(\S*) ', s).groups()
('29ca0a80180e9346295920344d64d1ce',)
顺便说一下,这不是正则表达式的任务。考虑使用一些简单的字符串操作(如split)。

答案 2 :(得分:0)

这个正则表达似乎有用

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