1

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

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

我想读取这个字符串并将 和 的值存储在alpha数据库中。我怎样才能编写一个可以做到这一点的正则表达式。betagamma

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

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

这输出alpha并停止?

  1. 这个对吗?
  2. 我如何读取所有值?
4

3 回答 3

3

1 是的,它是正确的,搜索在第一次匹配后停止。

2尝试findall而不是search

它返回一个列表。

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

如果要使用拆分:

[re.split('=',s) for s in re.split(';',string)]
于 2012-07-12T17:59:12.563 回答
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'}
于 2012-07-12T18:01:04.583 回答
1

您可以为您的字符串硬编码它:

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

然后使用re.search得到 a MatchObject,您可以从中分别使用组 1-3 的 和alphabetagamma

另一种选择是使用findallwith

(\w+)=(\d+)

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

于 2012-07-12T18:01:16.277 回答