删除R中字符串的中间部分

删除R中字符串的中间部分,r,regex,string,substring,R,Regex,String,Substring,如何去除刺的中间部分? 例如,以字符串“2018_002.Feb”为例。 对于这个例子,我想删除'002',这样我就得到'2018年2月' 有人能帮我吗?谢谢 我喜欢使用stringr包,而不是用于字符串操作的基本r包,因为我发现函数的语法更加一致 library(stringr) var = "2018_002.Feb" str_replace(var, pattern = "_\\d+\\.", replacement = "_") # [1] "2018_Feb" 使用str_re

如何去除刺的中间部分? 例如,以字符串“2018_002.Feb”为例。 对于这个例子,我想删除'002',这样我就得到'2018年2月'


有人能帮我吗?谢谢

我喜欢使用
stringr
包,而不是用于字符串操作的基本r包,因为我发现函数的语法更加一致

library(stringr)

var = "2018_002.Feb"

str_replace(var, pattern = "_\\d+\\.", replacement = "_")

# [1] "2018_Feb"
使用
str_replace()
基本上是在字符串中搜索一个模式,并用其他内容替换它。通常,替换内容只是一个空的
“”
,但在这种情况下,在函数查找
字符的位置开始搜索会更容易,因为它是非常唯一的。从这里开始,您希望匹配到该期间之后的所有数字

我建议学习一下正则表达式。R中的基本正则表达式是一个很好的资源

此问题的正则表达式如下所示:

  • 首先查找后跟数字的
    \\d
    字符,并保持匹配 数字
    +
    ,直到到达句点
    \\.
  • 找到匹配项“
    \u002.
    ”后,将其替换为“
    \u002.

希望这是可以理解的

我喜欢使用
stringr
包,而不是用于字符串操作的基本r包,因为我发现函数的语法更加一致

library(stringr)

var = "2018_002.Feb"

str_replace(var, pattern = "_\\d+\\.", replacement = "_")

# [1] "2018_Feb"
使用
str_replace()
基本上是在字符串中搜索一个模式,并用其他内容替换它。通常,替换内容只是一个空的
“”
,但在这种情况下,在函数查找
字符的位置开始搜索会更容易,因为它是非常唯一的。从这里开始,您希望匹配到该期间之后的所有数字

我建议学习一下正则表达式。R中的基本正则表达式是一个很好的资源

此问题的正则表达式如下所示:

  • 首先查找后跟数字的
    \\d
    字符,并保持匹配 数字
    +
    ,直到到达句点
    \\.
  • 找到匹配项“
    \u002.
    ”后,将其替换为“
    \u002.

希望这是可以理解的

尝试使用
sub(“\\d+\\”,“”,str1)#[1]“2018\u Feb”
或转换为date类
格式(as.date(str1,“%Y\u 0%d.%b”),“%Y\u%b”)
相关:这两个命令都工作得很好。谢谢你能解释一下这些命令是如何工作的吗?试着使用
sub(“\\d+\\”,“”,str1)\[1]“2018\u Feb”
或转换为date类
格式(as.date(str1,“%Y\u 0%d.%b”),“%Y\u%b”)
相关:这两个命令工作得非常好。谢谢你能给我解释一下这些命令是如何工作的吗?谢谢!这就解决了问题,我完全理解了。谢谢!这就解决了问题,我完全理解了。