【问题标题】:Retrieving a specific part of a string in R在 R 中检索字符串的特定部分
【发布时间】:2016-07-21 09:11:04
【问题描述】:

我有下一个字符串向量

[1] "/players/playerpage.htm?ilkidn=BRYANPHI01"
[2] "/players/playerpage.htm?ilkidhh=WILLIROB027"
[3] "/players/playerpage.htm?ilkid=THOMPWIL01"

我正在寻找一种方法来检索放置在等号之后的字符串部分,这意味着我想获得这样的向量

[1] "BRYANPHI01"
[2] "WILLIROB027"
[3] "THOMPWIL01"

我尝试使用 substr,但要使其正常工作,我必须确切知道等号在字符串中的位置以及我要检索的部分结束的位置

【问题讨论】:

    标签: r substring


    【解决方案1】:

    我们可以使用sub 匹配零个或多个不是= ([^=]*) 的字符后跟=,并将其替换为''

    sub("[^=]*=", "", str1)
    #[1] "BRYANPHI01"  "WILLIROB027" "THOMPWIL01" 
    

    数据

    str1 <-  c("/players/playerpage.htm?ilkidn=BRYANPHI01",  
              "/players/playerpage.htm?ilkidhh=WILLIROB027",
              "/players/playerpage.htm?ilkid=THOMPWIL01")
    

    【讨论】:

      【解决方案2】:

      使用stringr

      library(stringr)
      word(str1, 2, sep = '=')
      #[1] "BRYANPHI01"  "WILLIROB027" "THOMPWIL01"
      

      【讨论】:

        【解决方案3】:

        使用strsplit

        strsplit(str1, "=")[[1]][2]
        # [1] "BRYANPHI01"
        

        使用 Sotos 注释将结果作为向量:

        sapply(str1, function(x){
          strsplit(x, "=")[[1]][2]
        })
        

        【讨论】:

        • 如果你只想要第二部分的列表,是的,编辑它,谢谢。
        【解决方案4】:

        基于正则表达式的另一种解决方案,但提取而不是替换,这可能更有效。

        我使用stringi 包,它提供了比base R 更强大的正则表达式引擎(特别是支持look-behind)。

        str1 <-  c("/players/playerpage.htm?ilkidn=BRYANPHI01",  
                  "/players/playerpage.htm?ilkidhh=WILLIROB027",
                  "/players/playerpage.htm?ilkid=THOMPWIL01")
        stri_extract_all_regex(str1, pattern="(?<==).+$", simplify=T)
        

        (?&lt;==) 是一种后视:正则表达式只有在前面有等号时才会匹配,但等号不会成为匹配的一部分。

        .+$ 匹配所有内容直到结束。如果您对匹配的格式有信心,您可以用更精确的符号替换点。例如,'\w' 匹配任何字母数字字符,因此您可以使用 "(?&lt;==)\\w+$"\ 必须进行转义,因此您最终会得到 \\w)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-07-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-18
          • 1970-01-01
          • 2011-09-17
          • 2015-06-27
          相关资源
          最近更新 更多