<p>使用<code>[^,]*</code>可以选择匹配除逗号以外的任何字符,也可以匹配<code>-></code><em>(假设->;是tsv制表符分隔值中的制表符)</em></p>
<p>然后使用<code>([^\t]*)\t</code>捕获除制表符之外的任何字符,后跟制表符</p>
<p>但是,然后用一个空字符串替换整个匹配,删除刚刚匹配的所有内容</p>
<hr/>
<p>您可以切换模式中的第二个捕获组,并在替换中同时使用这两个组</p>
<pre><code>^([^,]*,[^,]*)[^\t]*(\t)
| |
group 1 group 2
</code></pre>
<p><a href="https://regex101.com/r/9XZmi7/1" rel="nofollow noreferrer">Regex demo</a></p>
<p>或者使用带有前瞻性assering <code>(?=\t)</code>选项卡的单个捕获组:</p>
<pre><code>^([^,]*,[^,]*)[^\t]*(?=\t)
</code></pre>
<p><a href="https://regex101.com/r/ddY4wY/1" rel="nofollow noreferrer">Regex demo</a></p>
<p>范例</p>
<pre><code>import re
pattern = r"^([^,]*,[^,]*)[^\t]*(?=\t)"
s = ("Hornus, Jean-Michel, pasteur \n"
"Diepenbeek, H. F. W., 1...-1..., capitaine 1.. 1..\n"
"Grosbellet, Bernard \n"
"ʿĪsa \n"
"Hacquet, Pierre-François, montfortain, Le P. ")
result = re.sub(pattern, r"\1", s, 0, re.MULTILINE)
if result:
print (result)
</code></pre>
<p>输出</p>
<pre><code>Hornus, Jean-Michel
Diepenbeek, H. F. W. 1.. 1..
Grosbellet, Bernard
ʿĪsa
Hacquet
</code></pre>