Python正则表达式正在提取“name=…”

2024-06-01 19:51:54 发布

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

我使用Python脚本从JIRA的公司实例读取数据。有一个值作为字符串返回,我需要找出如何从中提取一点信息。我需要的是'name=..'并且我只需要结果中的数字。在

<class 'list'>: ['com.atlassian.greenhopper.service.sprint.Sprint@6f68eefa[id=30943,rapidViewId=10468,state=CLOSED,name=2016.2.4 - XXXXXXXXXX,startDate=2016-05-26T08:50:57.273-07:00,endDate=2016-06-08T20:59:00.000-07:00,completeDate=2016-06-09T07:34:41.899-07:00,sequence=30943]']

我只需要2016.2.4的那部分。这个数字也不总是一样的。在

你有什么想法吗?我不熟悉正则表达式,希望能得到任何帮助。在


Tags: 实例字符串name脚本com信息serviceatlassian
2条回答

一个简单的正则表达式就可以做到这一点:name=([0-9.]+)。在

regex的主要部分是([0-9.]+),它将连续搜索任何数字(0-9)或句点(.),它将连续搜索(+)。在

现在,要使用这个:

import re
pattern = re.compile('name=([0-9.]+)')

string = '''<class 'list'>: ['com.atlassian.greenhopper.service.sprint.Sprint@6f68eefa[id=30943,rapidViewId=10468,state=CLOSED,name=2016.2.4 - XXXXXXXXXX,startDate=2016-05-26T08:50:57.273-07:00,endDate=2016-06-08T20:59:00.000-07:00,completeDate=2016-06-09T07:34:41.899-07:00,sequence=30943]']'''

matches = pattern.search(string)
# Only assign the value if a match is found
name_value = '' if not matches else matches.group(1)

使用capturing group提取版本名:

>>> import re
>>> s = 'com.atlassian.greenhopper.service.sprint.Sprint@6f68eefa[id=30943,rapidViewId=10468,state=CLOSED,name=2016.2.4 - XXXXXXXXXX,startDate=2016-05-26T08:50:57.273-07:00,endDate=2016-06-08T20:59:00.000-07:00,completeDate=2016-06-09T07:34:41.899-07:00,sequence=30943]'
>>> re.search(r"name=([0-9.]+)", s).group(1)
'2016.2.4'

其中([0-9.]+)是匹配一个或多个数字或点的捕获组,括号定义一个捕获组。在

非regex选项将涉及一些splitting,=和{}:

^{pr2}$

当然,这需要测试和错误处理。在

相关问题 更多 >