我正在尝试在python中编写正则表达式。假设我有一个字符串
string = "alpha=23; beta=34; gamma=43"
我想读取此字符串并将alpha
,beta
和gamma
的值存储在数据库中。我怎么能写一个能够做到这一点的正则表达式。
我的猜测是我必须查找正则表达式,检查单词后跟=
符号。我写了这个:
matchObj = re.search( r'\w+(?==)', string, re.I)
这会输出alpha
并停止?
答案 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获取alpha
,beta
和gamma
的值,分别
另一种选择是将findall
与
(\w+)=(\d+)
您可以使用第1组和第2组获取标识符(alpha
,...)和值。