簡體   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