Python正则表达式提取' name = ....'

时间:2016-07-15 15:52:52

标签: python regex extract

我使用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 部分。这个数字也不总是一样。

有关如何使用RE进行此操作的任何想法?我是正则表达式的新手,非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

一个简单的正则表达式可以解决这个问题:name=([0-9.]+)

正则表达式的主要部分是([0-9.]+),它会连续搜索任何数字(0-9)或句点(.)。{/ p >

现在,使用它:

+

答案 1 :(得分:0)

使用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.]+)是匹配一个或多个数字或点的捕获组,括号定义捕获组。

非正则表达式选项会涉及一些, =->>> l = [item.split("=") for item in s.split(",")] >>> next(value[1] for value in l if value[0] == "name").split(" - ")[0] '2016.2.4'

logback-test.xml

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