擅长:python、mysql、java
<p>你将要提取的部分分组:</p>
<pre><code>re.search(r'header=(?:\d*-)?(\d+)', inputstr).group(1)
</code></pre>
<p><code>(...)</code>标记一个组,像这样的位置组从1开始编号。你知道吗</p>
<p>我对您的表达式做了一点修改,只捕获包含数字和破折号的可选非捕获组之后的数字,以匹配您要查找的两种模式。<code>(?:...)</code>是一个<em>非捕获</em>组;它不在组中存储匹配的文本,但允许您使用组上的<code>?</code>量词将其标记为可选。你知道吗</p>
<p><a href="https://pythex.org/?regex=header%3D%28%3F%3A%5Cd%2a-%29%3F%28%5Cd%2B%29&test_string=RequestReadTimeout%20header%3D1234-40%2CMinRate%3DXXX%20body%3DXXX%0ARequestReadTimeout%20header%3D40%20body%3DXXX%0A&ignorecase=0&multiline=0&dotall=0&verbose=0" rel="nofollow">Pythex demo</a>。你知道吗</p>
<p>Python会话:</p>
<pre><code>>>> import re
>>> for inputstr in ('RequestReadTimeout header=1234-40,MinRate=XXX body=XXX', 'RequestReadTimeout header=40 body=XXX'):
... print re.search(r'header=(?:\d*-)?(\d+)', inputstr).group(1)
...
40
40
</code></pre>