删除 r 中逗号后的前 4 个字符

Delete first 4 characters after a comma in r

我有一个包含以下行的向量:

/en/house/125,/en/house/145,/en/house/06
/en/house/45,/fr/house/22,/fr/house/34

我想删除 /en/、/fr/ 等,因为有 24 种 2 字母的可能性。换句话说,我想删除一行的前 4 个字符,以及每次行中有逗号的前 4 个字符(我保留逗号)。 第一个很简单,我刚用过:

apply(vectorA, 2, function(x)gsub('\s+','',x))

但对于逗号后面的那个,它似乎不太明显。 请问有人知道如何轻松实现该功能吗?

预期输出应该是:

house/125,house/145,house/06
house/45,house/22,house/34

stringr::str_replace_all怎么样?

"/en/house/125,/en/house/145,/en/house/06" -> string
stringr::str_replace_all(string, "/[a-z]{2}/", "")

这会产生:

[1] "house/125,house/145,house/06"

这假设两个正斜杠之间的所有标签都是两个字符长且小写。

实际上,您只需要替换字符串开头或逗号后的 /[a-z]{2}/

您需要以下正则表达式:

(^|,)/[a-z]{2}/

并替换为 </code> 反向引用,如果捕获组匹配它,它将放回逗号。见 <a href="https://regex101.com/r/sScAb0/1" rel="nofollow noreferrer">regex demo</a>.</p> <p><strong>详情</strong></p> <ul> <li><code>(^|,) - 第 1 组(稍后用替换模式中的 </code> 替换反向引用引用):字符串的开头 (<code>^) 或 (|)一个逗号

  • / - 斜杠
  • [a-z]{2} - 两个小写 ASCII 字母
  • / - 斜线。
  • online R demo:

    x <- c("/en/house/125,/en/house/145,/en/house/06", "/en/house/45,/fr/house/22,/fr/house/34", "/es/do/45,/ro/nu/22,/ja/hs/34")
    gsub("(^|,)/[a-z]{2}/", "\1", x)
    ## => [1] "house/125,house/145,house/06" 
    ##    [2] "house/45,house/22,house/34"  
    ##    [3] "do/45,nu/22,hs/34"