使用正则表达式在字符串中使用整数值查找引号中的值

时间:2015-02-08 16:54:37

标签: python regex python-2.7 regex-greedy

我有一个字符串:

Started by upstream project "fcm-dummy-web" build number 99
originally caused by:
 Started by user Kaul, Kuber
[EnvInject] - Loading node environment variables.
Building on master in workspace /var/lib/jenkins/jobs/mischief-managed/workspace
 > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > /usr/bin/git config remote.origin.url
Fetching upstream changes from https://xx/kaulk/mischief-managed.git
 > /usr/bin/git --version # timeout=10
using GIT_SSH to set credentials 

我需要在第一行找到作业名称,在本例中为“fcm-dummy-web”,内部版本号为“99”。现在这些可能会在不同的构建中针对不同的作业而改变,但在第一行中,第一行将以“由上游项目启动”开始,并且具有“构建号”,后跟值。什么是正则表达式找到它?

我正在尝试:matches = re.findall(r“^由上游项目启动。* $”,文本)没有任何成功。

4 个答案:

答案 0 :(得分:1)

您可以这样搜索:

import re
text = '''
Started by upstream project "fcm-dummy-web" build number 99
originally caused by:
 Started by user Kaul, Kuber
'''
m = re.search(r'Started by upstream project "([^"]+)" build number (\d+)', text)
print("project = %s, build number %d" % (m.group(1), int(m.group(2))))

答案 1 :(得分:1)

在正则表达式中使用锚时使用多行修饰符m

>>> re.findall(r'(?m)^Started by upstream project\s+"([^"]*)"\s+build number\s+(\d+)', s)
[('fcm-dummy-web', '99')]

DEMO

答案 2 :(得分:0)

re.findall('^Started by upstream project "(.+)" build number (\d+)')

答案 3 :(得分:0)

re.findall('^由上游项目启动(“[^”] +“)\ s +内部版本号\ s +([\ d] +)$) 它匹配两组。项目名称的第一组和编号的第二组