gpt4 book ai didi

r - str_extract 仅捕获重复关键字的一个实例

转载 作者:行者123 更新时间:2023-12-04 09:13:10 37 4
gpt4 key购买 nike

当我在具有某个关键字的重复实例的字符串上使用 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"

    关于r - str_extract 仅捕获重复关键字的一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46557289/

    37 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com