簡體   English   中英

為字符串向量獲取每個字符串的多個匹配項

[英]Getting multiple matches per string for a vector of strings

我有一些如下所示的文本:

P17-Nationalist Revolutionary Movement-Free Bolivia Movement (Movimiento Nacionalista Revolucionario [MNR] - Movimiento Bolivia Libre [MBL] [MNR-MBL])
P18-Socialist Party (Partido Socialista [PS])
P19-Liberty and Justice (Libertad y Justicia [LJ])

All_Election_Parties <- readr::read_lines("All_Election_Parties.txt") 

代碼: str_match_all(entry, "(?<=\\\\[).+?(?=\\\\])")創建匹配列表。

[1] [MBL] 
[2] [MNR-MBL]
[3] [PS]
[4] [LJ]

然而,我想要的是它創建一個列表/列/向量,其中包含每個字符串的所有匹配項的向量/列表。 像這樣的東西:

[1] [MBL] [MNR-MBL]
[2] [PS]
[3] [LJ]

我怎么做?

您自己的解決方案str_match_all(entry, "(?<=\\\\[).+?(?=\\\\])")創建一個矩陣列表。 只需drop ing 放入每個列表中即可產生您想要的結果:

entry <- c("P17-Nationalist Revolutionary Movement-Free Bolivia Movement (Movimiento Nacionalista Revolucionario [MNR] - Movimiento Bolivia Libre [MBL] [MNR-MBL])",
           "P18-Socialist Party (Partido Socialista [PS])",
           "P19-Liberty and Justice (Libertad y Justicia [LJ])")


library(stringr)
library(purrr)

str_match_all(entry, "(?<=\\[).+?(?=\\])") %>% map(drop)
#> [[1]]
#> [1] "MNR"     "MBL"     "MNR-MBL"
#> 
#> [[2]]
#> [1] "PS"
#> 
#> [[3]]
#> [1] "LJ"

reprex 包(v0.3.0) 於 2019 年 11 月 23 日創建

我們可以使用str_extract_all

stringr::str_extract_all(All_Election_Parties, "\\[.+?\\]")
#[[1]]
#[1] "[MNR]"     "[MBL]"     "[MNR-MBL]"

#[[2]]
#[1] "[PS]"

#[[3]]
#[1] "[LJ]"

同樣在基數 R

regmatches(All_Election_Parties, gregexpr("\\[.+?\\]", All_Election_Parties))

數據

text <- "P17-Nationalist Revolutionary Movement-Free Bolivia Movement (Movimiento Nacionalista Revolucionario [MNR] - Movimiento Bolivia Libre [MBL] [MNR-MBL])
P18-Socialist Party (Partido Socialista [PS])
P19-Liberty and Justice (Libertad y Justicia [LJ])"


All_Election_Parties <- readr::read_lines(text)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM