繁体   English   中英

想要删除字符串中特定多字字符之前的所有字符

[英]Want to remove all characters in a string before a specific multi-word character

我有以下 gastly 字符串:

x <- "Tomas Ceresnak (C)\nC 71 16 Elko Prairie Cowboys\n- UNK\nVratislav Bohácik (F)\nF 71 16 Wabun Huskies\n- UNK\nLuca Mullins (D)\nD 71 16 Groundbirch Rhino Chuckers\n- UNK\nDandre Carlton (F)\nF 71 16 Ebony Gothic Knights\n- UNK\nLynn Marez (F)\nF 71 16 Ebony Gothic Knights\n- UNK\nHynek Hoško (C)\nC 71 16 HC Kometa Železnice U18\n- UNK\nGlynn Shields (F)\nF 71 16 Chanhassen Nova Ocelots\n- UNK\nJeet Beals (C)\nC 71 16 Chanhassen Nova Ocelots\n- UNK\nVeit Olivarez (F)\nF 71 16 Minnesota City Electricity\n- UNK\nGregory Mason (D)\nD 71 16 McMurphy Energy\n- UNK\nElias Storck (C)\nC 71 16 SK Semla U18\n- UNK\nKnut Scheutz (C)\nC 71 16 Bogla AIF U18\n- UNK\nJonny Hendrix (F)\nF 71 16 Minnesota City Electricity\n- UNK\nDmitry Kuvayev (G)\nG 71 16 Rotor Pervomayskiy U18\n- UNK\nKofi Orona (G)\nG 71 16 Cherhill Vikes\n- UNK"

我想删除之前的所有内容,包括可以在第二行末尾找到的"Dandre Carlton (F)" 我是一个很差的编码员,但这是我正在尝试实施的网络抓取项目的一部分。 本质上,我的信息分布在两页上,并在特定的个人 Dandre Carlton 处中断。 然后,我通过使用str_count("[(]",string)来计算 Dandre Carlton 之后出现的个体数量,以获得个体总数,因为我可以从左括号的出现中识别出一个新个体。

我将"Dandre Carlton (F)"存储在一个名为name的变量中,整个字符串仅存储在 string 中。 我试过了:

newstring<-gsub(paste0(".*",name),"",string)

但显然这对我没有用,再一次。 我需要它足够通用,以便我可以粘贴任何名称作为两页之间的分隔符,以便之后计算它们。

我想得到的结果是

"\nF 71 16 Ebony Gothic Knights\n- UNK\nLynn Marez (F)\nF 71 16 Ebony Gothic Knights\n- UNK\nHynek Hoško (C)\nC 71 16 HC Kometa Železnice U18\n- UNK\nGlynn Shields (F)\nF 71 16 Chanhassen Nova Ocelots\n- UNK\nJeet Beals (C)\nC 71 16 Chanhassen Nova Ocelots\n- UNK\nVeit Olivarez (F)\nF 71 16 Minnesota City Electricity\n- UNK\nGregory Mason (D)\nD 71 16 McMurphy Energy\n- UNK\nElias Storck (C)\nC 71 16 SK Semla U18\n- UNK\nKnut Scheutz (C)\nC 71 16 Bogla AIF U18\n- UNK\nJonny Hendrix (F)\nF 71 16 Minnesota City Electricity\n- UNK\nDmitry Kuvayev (G)\nG 71 16 Rotor Pervomayskiy U18\n- UNK\nKofi Orona (G)\nG 71 16 Cherhill Vikes\n- UNK"

然后我将使用:

individuals<-str_count("[(]",newstring)

这给了我我想要的号码

如果您能够使用转义括号进行保存,

name <-  "Dandre Carlton \\(F\\)"

否则使用stringi

name <- stringi::stri_replace_all_regex(name, c('\\(', '\\)'), c('\\\\(', '\\\\)'), vectorize_all=F)

那么就只是

gsub(paste0('.*', name), '', x)
[1] "\nF 71 16 Ebony Gothic Knights\n- UNK\nLynn Marez (F)\nF 71 16 Ebony Gothic Knights\n- UNK\nHynek Hoško (C)\nC 71 16 HC Kometa Železnice U18\n- UNK\nGlynn Shields (F)\nF 71 16 Chanhassen Nova Ocelots\n- UNK\nJeet Beals (C)\nC 71 16 Chanhassen Nova Ocelots\n- UNK\nVeit Olivarez (F)\nF 71 16 Minnesota City Electricity\n- UNK\nGregory Mason (D)\nD 71 16 McMurphy Energy\n- UNK\nElias Storck (C)\nC 71 16 SK Semla U18\n- UNK\nKnut Scheutz (C)\nC 71 16 Bogla AIF U18\n- UNK\nJonny Hendrix (F)\nF 71 16 Minnesota City Electricity\n- UNK\nDmitry Kuvayev (G)\nG 71 16 Rotor Pervomayskiy U18\n- UNK\nKofi Orona (G)\nG 71 16 Cherhill Vikes\n- UNK"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM