<p>例如,您的数据可以使<code>'</code>成为可选的<code>'?</code>,并在一个组中捕获您的值,然后在捕获的组中循环。你知道吗</p>
<p><a href="https://regex101.com/r/eMVMRn/2" rel="nofollow noreferrer">^{<cd3>}</a></p>
<pre><code>test_str = ("upstream(upstreamProjects: 'upstreamJob', threshold: hudson.model.Result.SUCCESS) # just parentheses\n"
"pollSCM('H * * * *') # single quotes and parentheses")
matches = re.finditer(regex, test_str, re.MULTILINE)
for matchNum, match in enumerate(matches):
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print (match.group(groupNum))
</code></pre>
<p><a href="http://rextester.com/ZCET17209" rel="nofollow noreferrer">Demo Python</a></p>
<p>这会给你:</p>
<pre><code>upstreamProjects: 'upstreamJob', threshold: hudson.model.Result.SUCCESS
H * * * *
</code></pre>
<p>要获得更严格的匹配,您可以使用交替来匹配<code>()</code>或<code>('')</code>,但不能使用像<code>('H * * * *)</code>这样的单个<code>'</code>,然后遍历捕获的组。因为您现在捕获了2个组,其中1个组是空的,所以您可以检查是否只检索非空组。你知道吗</p>
<p><a href="https://regex101.com/r/eMVMRn/1" rel="nofollow noreferrer">^{<cd8>}</a></p>
<p><a href="http://rextester.com/UAFM37409" rel="nofollow noreferrer">Demo Python</a></p>