str_extract 仅捕获一个重复出现的关键字实例
str_extract captures only one instance of recurring keyword
当我在包含某个关键字的重复实例的字符串上使用 str_extract()
时,它只捕获其中一个。
> str_extract("1234cAc5678cAc90123", ".....A.....")
[1] "1234cAc5678"
我有两个问题:
- 择其一而不择其一的标准是什么? (即“5678cAc9012”)
- 如何让 R 在每次出现时都提取实例,而不管字符串是否重叠?
str_extract_all 在字符串不重叠时给出了 2 个实例,这意味着 str_extract 仅捕获重复字符串的第一个实例。
> str_extract_all("1234cAc5678cAc90123", "...A...")
[[1]]
[1] "34cAc56" "78cAc90"
是否有任何其他函数可以显示所有出现的事件,即使它们重叠,如下所示:
[1] "1234cAc5678"
[2] "5678cAc9012"
甚至这样:
> str_extract("0123A456A7890", "....A....")
[1] "0123A456A"
[2] "A456A7890"
如果我们要查找重叠匹配项,请使用 stri_match_all
library(stringi)
stri_match_all_regex(str1, "(?=(.{5}A.{5}))")[[1]][,2]
#[1] "1234cAc5678" "5678cAc9012"
或者如果我们使用 stringr
,调用 stringi
,则使用 str_match_all
str_match_all(str1, "(?=(.{5}A.{5}))")[[1]][,2]
#[1] "1234cAc5678" "5678cAc9012"
str_match_all("0123A456A7890", "(?=(.{4}A.{4}))")[[1]][,2]
#[1] "0123A456A" "A456A7890"
数据
str1 <- "1234cAc5678cAc90123"
当我在包含某个关键字的重复实例的字符串上使用 str_extract()
时,它只捕获其中一个。
> str_extract("1234cAc5678cAc90123", ".....A.....")
[1] "1234cAc5678"
我有两个问题:
- 择其一而不择其一的标准是什么? (即“5678cAc9012”)
- 如何让 R 在每次出现时都提取实例,而不管字符串是否重叠?
str_extract_all 在字符串不重叠时给出了 2 个实例,这意味着 str_extract 仅捕获重复字符串的第一个实例。
> str_extract_all("1234cAc5678cAc90123", "...A...")
[[1]]
[1] "34cAc56" "78cAc90"
是否有任何其他函数可以显示所有出现的事件,即使它们重叠,如下所示:
[1] "1234cAc5678"
[2] "5678cAc9012"
甚至这样:
> str_extract("0123A456A7890", "....A....")
[1] "0123A456A"
[2] "A456A7890"
如果我们要查找重叠匹配项,请使用 stri_match_all
library(stringi)
stri_match_all_regex(str1, "(?=(.{5}A.{5}))")[[1]][,2]
#[1] "1234cAc5678" "5678cAc9012"
或者如果我们使用 stringr
,调用 stringi
,则使用 str_match_all
str_match_all(str1, "(?=(.{5}A.{5}))")[[1]][,2]
#[1] "1234cAc5678" "5678cAc9012"
str_match_all("0123A456A7890", "(?=(.{4}A.{4}))")[[1]][,2]
#[1] "0123A456A" "A456A7890"
数据
str1 <- "1234cAc5678cAc90123"