这是我正在使用的数据字符串。
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”的值
答案 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"=
就在我们的匹配之前。