擅长:python、mysql、java
<p>如果第二组的单词字符位于2个右括号之后,则可以省略<code>re.DOTALL</code>,并使用一个模式,例如使用<code>[\s\S]*?</code>匹配在多行上延伸,直到遇到2个连续括号为止</p>
<p>此模式基于示例数据,并且可能容易出错,因为它依赖于2个括号作为块2之前的最后一部分</p>
<pre><code>^\s*(\w+)\r?\n\s*#\([\s\S]*?\)\s*\).*\r?\n\s*(\w+)
</code></pre>
<p><a href="https://regex101.com/r/kFPMIj/1" rel="nofollow noreferrer">Regex demo</a></p>
<p>另一个选项是匹配第一个块后不以单词字符开头的行,并在组2中捕获以单词字符开头的行的单词字符</p>
<pre><code>^\s*(\w+)\r?\n[^\S\r\n]*#\(.*(?:\r?\n(?![^\S\r\n]*\w).*)*\r?\n[^\S\r\n]+(\w+)
</code></pre>
<p><a href="https://regex101.com/r/kgP8ye/1" rel="nofollow noreferrer">Regex demo</a></p>