Regex 多结尾正则表达式

Regex 多结尾正则表达式,regex,python-3.x,pandas,Regex,Python 3.x,Pandas,我有这样一个熊猫数据框: idx name 1 "NM_014855.2(AP5Z1):c.80_83delGGATinsTGCTGTAAACTGTAACTGTAAA (p.Arg27_Ala362delinsLeuLeuTer)" 2 "NM_014630.2(ZNF592):c.3136G>A (p.Gly1046Arg)" 3 "NM_000410.3(HFE):c.892+48G>A" 4 "NC_000014.9:g.(31394019_31414

我有这样一个熊猫数据框:

idx  name
1    "NM_014855.2(AP5Z1):c.80_83delGGATinsTGCTGTAAACTGTAACTGTAAA (p.Arg27_Ala362delinsLeuLeuTer)"
2    "NM_014630.2(ZNF592):c.3136G>A (p.Gly1046Arg)"
3    "NM_000410.3(HFE):c.892+48G>A"
4    "NC_000014.9:g.(31394019_31414809)_(31654321_31655889)del"
我需要提取
':'
字符后面的内容,直到出现以下任一情况:

df.str.extract(r"\):(.*) \(|\n")
  • (“

  • “del”

  • {字符串结尾}

我尝试了以下方法:

df.str.extract(r"\):(.*) \(|\n")
但这并不适用于所有情况


如何正确指定所需的条件?

使用惰性匹配
*?
来最小化
*
将捕获的数量,然后指定要查找的停止条件:

df.str.extract(r":(.*?)(?:\(|del|$)")

正则表达式通常匹配可能最长的字符串,但
会将其切换为匹配可能最短的字符串。

使用延迟匹配
*?
来最小化
*
将捕获的量,然后指定要查找的停止条件:

df.str.extract(r":(.*?)(?:\(|del|$)")
正则表达式通常匹配可能最长的字符串,但
将其切换为匹配可能最短的字符串。

正则表达式通常匹配可能最长的字符串是错误的语句。贪婪量词使模式匹配到后续子模式的最右端,而惰性量词则使模式匹配到最右端ke模式匹配最左边的出现(首次发现)。正则表达式通常匹配最长的字符串是错误的语句。贪婪量词使模式匹配后续子模式的最右边出现,惰性量词使模式匹配最左边的出现(首次发现)。