擅长:python、mysql、java
<p>如果要匹配第一个下划线后的单词字符,则必须排除与<code>_</code>本身匹配的字符,该字符本身也与<code>\w</code>匹配</p>
<pre><code>[^\W_]+_([^\W_]+)
</code></pre>
<p><strong>解释</strong></p>
<ul>
<li><code>[^\W_]+</code>匹配除<code>_</code>之外的1+字字符</li>
<li><code>_</code>匹配<code>_</code></li>
<li><code>([^\W_]+)</code>捕获组1中不带下划线的匹配1+字字符</li>
</ul>
<p>使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.extract.html" rel="nofollow noreferrer">str.extract</a>将<em>从正则表达式</em>的第一个匹配中提取组</p>
<pre><code>import pandas as pd
strings = [
["RQ01", "obe_fin_r3_003"],
["RQ01", "ouk_log_r3_002_am"]
]
df = pd.DataFrame(data=strings, columns=["Ticket", "Job"])
df["job_type"] = df["Job"].str.extract(r'[^\W_]+_([^\W_]+)')
print(df)
</code></pre>
<p>输出</p>
<pre><code> Ticket Job job_type
0 RQ01 obe_fin_r3_003 fin
1 RQ01 ouk_log_r3_002_am log
</code></pre>