正则表达式解析一个带有“=”分隔字符串的字符串?

时间:2012-07-12 17:55:28

标签: python regex

我正在尝试在python中编写正则表达式。假设我有一个字符串

string = "alpha=23; beta=34; gamma=43"

我想读取此字符串并将alphabetagamma的值存储在数据库中。我怎么能写一个能够做到这一点的正则表达式。

我的猜测是我必须查找正则表达式,检查单词后跟=符号。我写了这个:

matchObj = re.search( r'\w+(?==)', string, re.I)

这会输出alpha并停止?

  1. 这是对的吗?
  2. 我如何阅读所有值?

3 个答案:

答案 0 :(得分:3)

1 是的,它是正确的,搜索在第一场比赛后停止。

2 尝试findall而不是search

返回一个列表。

re.findall( r'(\w+)=([^;]+)', string, re.I)

如果你想使用split:

[re.split('=',s) for s in re.split(';',string)]

答案 1 :(得分:1)

简单的事情:

s = "alpha=23; beta=34; gamma=43"
re.findall(r'([a-z]+)=(\d+)', s, re.I) or # (\w+) instead I guess
# [('alpha', '23'), ('beta', '34'), ('gamma', '43')]

或没有正则表达式(可能更有用)

dict(i.split('=') for i in s.split(';'))
# {'alpha': '23', ' beta': '34', ' gamma': '43'}

答案 2 :(得分:1)

您可以对其进行硬编码:

alpha=(\d+); beta=(\d+); gamma=(\d+)

然后使用re.search获取MatchObject,您可以使用群组1-3获取alphabetagamma的值,分别

另一种选择是将findall

一起使用
(\w+)=(\d+)

您可以使用第1组和第2组获取标识符(alpha,...)和值。