<p>从<a href="https://docs.python.org/3/library/re.html#re.match" rel="nofollow noreferrer">^{<cd1>}</a>的文档中:</p>
<blockquote>
<p>If zero or more characters at the beginning of string match the regular expression pattern, return a corresponding match object. Return None if the string does not match the pattern;</p>
</blockquote>
<p><code>re.match</code>仅当匹配从字符串的开头开始时才有用,它不会在字符串中找到所有匹配项。你知道吗</p>
<p>剩下两个主要选项:</p>
<ul>
<li><p>按行拆分输入文件并使用<code>re.match</code></p></li>
<li><p>使用多行匹配和<code>re.findall</code></p></li>
</ul>
<p>选项1:</p>
<pre><code>r = subprocess.Popen(['ls', '/home/administrator/sotest'], stdout=subprocess.PIPE)
information = r.stdout.read().decode('utf-8').split('\n') # ['ajax2', 'jaxe32', 'jjape3', '']
for user in information:
s = re.match(r'j(?!j)\w*', user)
if s:
print(s.group())
</code></pre>
<p>输出:</p>
<pre><code>jaxe32
</code></pre>
<p><strong><em>选项2</em></strong>(使用<a href="https://regex101.com/r/FjRPvM/3/" rel="nofollow noreferrer">^{<cd5>}</a>):</p>
<pre><code>r = subprocess.Popen(['ls', '/home/administrator/sotest'], stdout=subprocess.PIPE)
information = r.stdout.read().decode('utf-8') # 'ajax2\njaxe32\njjape3\n'
print(re.findall(r'(?m)^j(?!j)\w*$', information))
</code></pre>
<p>输出:</p>
<pre><code>['jaxe32']
</code></pre>