在`*`之后删除所有内容

时间:2015-03-04 19:16:25

标签: regex r substring

我想知道如何在数据*之后删除所有内容。我有以下值:IGHV4-59*01IGHV4-4*02,只需要IGHV4-59IGHV-4。我尝试使用sub但没有得到预期的结果:

sub("*.*" , " ", data_head$v_segment)
## [1] " " " " " " " " " " " "

而不是在*之后删除所有内容,而是完全删除所有内容。感谢。

3 个答案:

答案 0 :(得分:2)

试试这个。基本上,*是正则表达式中的元字符,因此如果您希望引擎将其视为实际的标点字符,则需要将其转义。

gsub("\\*.*", "", c("IGHV4-59*01", "IGHV4-4*02")) # You can use `sub` too as per comment
## [1] "IGHV4-59" "IGHV4-4" 

答案 1 :(得分:1)

您的正则表达式失败,因为*是正则表达式中的特殊字符,即使前面没有其他字符也是如此。因此需要进行转义。 "\\*.*"是您想要的模式。

答案 2 :(得分:1)

它没有按预期工作,因为您需要转义*以匹配文字。

sub("\\*.*", "", data_head$v_segment)