Regex 基于前缀和后缀对字符串进行子集设置
我有一列包含以下类型的名称:Regex 基于前缀和后缀对字符串进行子集设置,regex,r,subset,Regex,R,Subset,我有一列包含以下类型的名称: sp_O00168_PLM_HUMAM sp_Q8N1D5_CA158_HUMAN sp_Q15818_NPTX1_HUMAN tr_Q6FGH5_Q6FGH5_HUMAN sp_Q9UJ99_CAD22_HUMAN 我想删除第二个之前的所有内容,包括第二个之后的所有内容,包括第三个 我不知道根据字符数删除哪些字符,因为这不是一个固定的数字 输出应为: PLM CA158 NPTX1 Q6FGH5 CAD22 我已经玩过
sp_O00168_PLM_HUMAM
sp_Q8N1D5_CA158_HUMAN
sp_Q15818_NPTX1_HUMAN
tr_Q6FGH5_Q6FGH5_HUMAN
sp_Q9UJ99_CAD22_HUMAN
我想删除第二个之前的所有内容,包括第二个之后的所有内容,包括第三个
我不知道根据字符数删除哪些字符,因为这不是一个固定的数字
输出应为:
PLM
CA158
NPTX1
Q6FGH5
CAD22
我已经玩过这些了,但还没完全弄对。。
图书馆架线工
str_subx,-6,-1这不是编程术语中的一个子集,它是一个子串。为了提取部分字符串,您通常会使用几乎与语言无关的语言;在R中:
> gsub(".*_.*_(.*)_.*", "\\1", "sp_O00168_PLM_HUMAM")
[1] "PLM"
1旁白:取子集,顾名思义,是一种集合操作,集合的定义是没有重复的元素,并且元素没有特定的顺序。相比之下,字符串是一个序列,它是一个非常不同的概念。在编程术语1中,它不是真正的子集,而是一个子字符串。为了提取部分字符串,您通常会使用几乎与语言无关的语言;在R中:
1旁白:取子集,顾名思义,是一种集合操作,集合的定义是没有重复的元素,并且元素没有特定的顺序。相比之下,字符串是一个序列,这是一个非常不同的概念。另一个可能的正则表达式是:
sub("^(?:.+_){2}(.+?)_.+", "\\1", vec)
# [1] "PLM" "CA158" "NPTX1" "Q6FGH5" "CAD22"
其中vec是字符串的向量
直观的解释:
另一个可能的正则表达式是:
sub("^(?:.+_){2}(.+?)_.+", "\\1", vec)
# [1] "PLM" "CA158" "NPTX1" "Q6FGH5" "CAD22"
其中vec是字符串的向量
直观的解释:
非常感谢。我最后的代码是:测试谢谢!我最后的代码是:测试谢谢你的澄清!谢谢你的澄清!给人印象深刻的谢谢,太棒了!非常感谢。