回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<div>
</div>
<p>我正在聊天组中工作,我想获取发送消息的用户的号码或姓名</p>
<p>我创建了一个模式来获取电话号码,然后我拨打了<code>patternnumber</code>。我不知道如何在模式中使用逻辑运算符</p>
<pre><code>re.search(r'[a-zA-Z]{3,}','11/09/2017 21:46 - Robert: Hello world\n')
</code></pre>
<hr/>
<blockquote>
<pre><code><re.Match object; span=(19, 25), match='Robert'>
</code></pre>
</blockquote>
<p>然而</p>
<pre><code>re.search(patternnumber or r'[a-zA-Z]{3,}','11/09/2017 21:46 - Robert: Hello world\n')
</code></pre>
<p>什么也没给我</p>
<p>我已经尝试使用<code>|</code>而不是“or”,但它给出了一个错误。我怎样才能解决这个问题</p>
<h2>编辑:</h2>
<p>下面的一个答案部分解决了我的第一个问题,请参见:</p>
<pre><code>re.search(r'patternnumber|[a-zA-Z]{3,}','11/09/2017 21:46 - Robert: Hello world\n')
</code></pre>
<pre><code><re.Match object; span=(19, 25), match='Robert'>
</code></pre>
<p>好的,但是当我添加电话号码而不是姓名时,我有另一个问题:</p>
<pre><code>patternnumber = r'(\(|\+)*\d{1,3}\)* \(*\d{2,5}\)* \d{2,7}((\-|\s)\d{2,5})*((\-|\s)\d{2,5})*'
re.search(r'patternnumber|[a-zA-Z]+','13/09/2017 22:10 - +55 85 8507-4394: Hello world\n')
</code></pre>
<hr/>
<pre><code><re.Match object; span=(37, 42), match='Hello'>
</code></pre>
<pre><code>re.search(r'(\(|\+)*\d{1,3}\)* \(*\d{2,5}\)* \d{2,7}((\-|\s)\d{2,5})*((\-|\s)\d{2,5})*|[a-zA-Z]+','13/09/2017 22:10 - +99 99 9999-9999: Hello world\n')
</code></pre>
<pre><code><re.Match object; span=(19, 35), match='+99 99 9999-9999'>
</code></pre>
<p>这应该是我所期望的答案</p>
<p>我不知道发生了什么,模式是一样的,区别在于一个是我之前创建的变量,另一个是我直接调用的变量:</p>