在//之前和之后提取模式符号

时间:2018-01-30 13:15:55

标签: r

我对R中的正则表达不太熟悉。

在一列中我试图在//之前和之后提取单词符号。即这就是我在专栏中的内容:

qtaro_269//qtaro_269||qtaro_353//qtaro_353||qtaro_375//qtaro_375||qtaro_11//qtaro_11

这就是我想要的:

qtaro_269; qtaro_353; qtaro_375; qtaro_11

我发现了这个:Extract character before and after "/"而且:Extract string before "|"。但是我不知道如何根据我的输入进行调整。非常感谢任何提示。

编辑:

a  qtaro_269//qtaro_269||qtaro_353//qtaro_353||qtaro_375//qtaro_375||qtaro_11//qtaro_11
b 
c qtaro_269//qtaro_269||qtaro_353//qtaro_353||qtaro_375//qtaro_375||qtaro_11//qtaro_11

2 个答案:

答案 0 :(得分:2)

以下情况如何?

# Split by "||"
x2 <- unlist(strsplit(x, "\\|\\|"))
[1] "qtaro_269//qtaro_269" "qtaro_353//qtaro_353" "qtaro_375//qtaro_375" "qtaro_11//qtaro_11"  

# Remove everything before and including "//"
gsub(".+//", "", x2)
[1] "qtaro_269" "qtaro_353" "qtaro_375" "qtaro_11"

如果你想将它作为一个字符串;进行分离:

paste(gsub(".+//", "", x2), collapse = "; ")
[1] "qtaro_269; qtaro_353; qtaro_375; qtaro_11"

答案 1 :(得分:0)

这就是我解决它的方式。肯定不是最聪明,最优雅的方式,所以欢迎提出改进建议。

df <-unlist(lapply(strsplit(df[[2]],split="\\|\\|"), FUN = paste, collapse = "; "))
df <-unlist(lapply(strsplit(df[[2]],split="\\/\\/"), FUN = paste, collapse = "; "))
df <- sapply(strsplit(df$V2, "; ", fixed = TRUE), function(x) paste(unique(x), collapse = "; "))