擅长:python、mysql、java
<p><strong>这是创建电话号码刮除regex的过程。</strong></p>
<p>首先,我们需要匹配一个区号(3位)、一个中继(3位)和一个分机(4位):</p>
<pre><code>reg = re.compile("\d{3}\d{3}\d{4}")
</code></pre>
<p>现在,我们要捕获匹配的电话号码,所以在要捕获的部分(全部)周围添加括号:</p>
<pre><code>reg = re.compile("(\d{3}\d{3}\d{4})")
</code></pre>
<p>区号、中继和扩展名最多可由3个非数字字符分隔(例如,当空格与连字符/点分隔符一起使用时):</p>
<pre><code>reg = re.compile("(\d{3}\D{0,3}\d{3}\D{0,3}\d{4})")
</code></pre>
<p>现在,电话号码实际上可能以<code>(</code>字符开头(如果区号括在括号中):</p>
<pre><code>reg = re.compile("(\(?\d{3}\D{0,3}\d{3}\D{0,3}\d{4}).*?")
</code></pre>
<p>现在,整个电话号码可能嵌入了一堆其他文本:</p>
<pre><code>reg = re.compile(".*?(\(?\d{3}\D{0,3}\d{3}\D{0,3}\d{4}).*?")
</code></pre>
<p>现在,其他文本可能包括换行符:</p>
<pre><code>reg = re.compile(".*?(\(?\d{3}\D{0,3}\d{3}\D{0,3}\d{4}).*?", re.S)
</code></pre>
<p><strong>享受吧!</strong></p>
<p>我个人在这里停下来,但如果您真的想确保仅使用空格、连字符和点作为分隔符,则可以尝试以下操作(未经测试):</p>
<pre><code>reg = re.compile(".*?(\(?\d{3})? ?[\.-]? ?\d{3} ?[\.-]? ?\d{4}).*?", re.S)
</code></pre>