使用三个固定字符之间的正则表达式提取数据

时间:2015-09-19 11:52:56

标签: python regex python-2.7

这是我正在使用的数据字符串。

f = """{"id"=156,"pid"=656,"sd"=656,"id"=156,"pid"=656}"""

我想读取id的值。所以我正在使用

regex = '"id":(.+?),"pid"'
pattern = re.compile(regex)
ida = re.findall(pattern,f)

现在regex返回两个id值。 我想只读取“id”和“sd”之间的id值。我们怎么能写一个正则表达式声明来包含“pid”和“sd”来获得第一个“id”的值

2 个答案:

答案 0 :(得分:3)

re.findall()会返回模式的所有匹配项,而您可以使用re.search获取第一个id的值:

>>> re.search(r'"id"=(\d+)',f).group(1)
'156'

请注意,如果您只想查找模式的第一个匹配项,则不需要其他额外条件,re.search将默认返回该模式。

答案 1 :(得分:0)

您可以使用lookarounds regex:

>>> f = """{"id"=156,"pid"=656,"sd"=656,"id"=156,"pid"=656}"""
>>> print re.search(r'(?<="id"=)(\w+)(?=.*"sd")', f).group()
156

(?=.*"sd")将确保"sd"在我们的比赛之后。

(?<="id"=)将确保"id"=就在我们的匹配之前。