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

2024-04-23 21:57:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用python编写正则表达式。假设我有一根弦

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

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

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

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

输出alpha并停止?你知道吗

  1. 是这样吗?你知道吗
  2. 如何读取所有值?你知道吗

Tags: 字符串alphare数据库searchstring符号单词
3条回答

1个 是的,它是正确的,搜索在第一次匹配后停止。你知道吗

二 尝试findall而不是search

它返回一个列表。你知道吗

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

如果要使用拆分:

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

一些简单的事情,比如:

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'}

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

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

然后使用re.search得到一个MatchObject,从中可以分别使用组1-3作为alphabetagamma的值。你知道吗

另一个选项是将findall

(\w+)=(\d+)

您可以使用组1和2来获取标识符(alpha,…)和值。你知道吗

相关问题 更多 >