我使用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进行此操作的任何想法?我是正则表达式的新手,非常感谢您的帮助。
答案 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
当然,这需要测试和错误处理。