我有一个像这样的pandas DataFrame:
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"
我需要提取':'
字符后的任何内容,直到以下任何一项:
" ("
"del"
{end of string}
我尝试了以下内容:
df.str.extract(r"\):(.*) \(|\n")
但它并不适用于所有情况。
如何正确指定我需要的条件?
答案 0 :(得分:2)
使用惰性匹配*?
来最小化.*
将捕获的数量,然后指定您要查找的停止条件:
df.str.extract(r":(.*?)(?:\(|del|$)")
正则表达式通常与最长的字符串匹配,但?
会将其切换为与最短可能的字符串匹配。