[英]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.