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

use regex to find value in quotes in the string with an integer value

我有一个字符串:

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”。现在这些可能会因不同的工作而在不同的构建中发生变化,但在所有情况下,第一行将以 "Started by upstream project" 开头,然后是 "build number" 后跟值。找到它的正则表达式是什么?

我正在尝试:matches=re.findall(r"^Started by upstream project .*$", text) 但没有成功。

您可以这样搜索:

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))))
re.findall('^Started by upstream project "(.+)" build number (\d+)')

只要在正则表达式中使用锚点,就使用多行修饰符 m

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

DEMO

re.findall('^由上游项目启动 ("[^"]+")\s+build number\s+([\d]+)$) 它匹配两组。第一组为项目名称,第二组为内部版本号