📜  R编程中的字符串匹配

📅  最后修改于: 2022-05-13 01:55:23.295000             🧑  作者: Mango

R编程中的字符串匹配

字符串匹配是任何语言的一个重要方面。它在查找、替换和删除字符串时很有用。为了理解 R 语言中的字符串匹配,我们首先必须了解 R 中可用的相关函数。为此,我们可以使用匹配字符串或正则表达式。正则表达式是包含特殊符号和字符的字符串,用于从给定数据中查找和提取所需信息。正则表达式基本上是包含字符和特殊符号的字符串。要了解有关正则表达式的更多信息。

字符串匹配操作

查找字符串

为了在字符串中搜索特定模式,我们可以使用许多函数。如果我们需要找到所需字符串/pattern 的位置,我们可以使用 grep() 方法。另一方面,如果我们只需要知道模式是否存在,我们可以使用逻辑函数grepl()根据结果返回 True 或 False。让我们更多地了解这些方法。

  • grep()函数:它返回在向量中找到模式的索引。如果该模式多次出现,则返回出现的索引列表。这非常有用,因为它不仅告诉我们模式的出现,还告诉我们它在向量中的位置。

    示例 1:在字符串中查找 'he' 的所有实例。

    str <- c("Hello", "hello", "hi", "hey")
    grep('he', str)
    

    输出:

    [1] 2 4
    

    正如您在上面的示例中注意到的那样,由于“H”和“h”的情况不同,没有考虑“He”。但是,如果希望忽略这些情况,则将参数ignore.case设置为 True,默认情况下设置为 False。

    示例 2:查找字符串中的所有 'he' 实例,不考虑大小写

    str <- c("Hello", "hello", "hi", "hey")
    grep('he', str, ignore.case ="True")
    

    输出:

    [1] 1 2 4
    
  • grepl()函数:它是一个逻辑函数,如果在向量中找到指定的模式,则返回值 True,如果未找到,则返回 false。

    示例 1:查找字符串中是否存在 'the' 的任何实例。

    str <- c("Hello", "hello", "hi", "hey")
    grepl('the', str)
    

    输出:

    [1] FALSE
    

    示例 2:查找字符串中是否存在 'he' 的任何实例。

    str <- c("Hello", "hello", "hi", "hey")
    grepl('he', str)
    

    输出:

    [1] TRUE
    
  • regexpr()函数:它在字符串的每个元素中搜索模式的出现。例如,如果一个向量由“n”个字符串组成,则搜索所有“n”个字符串以查找该模式。如果找到该模式,则返回该模式的索引。如果未找到,则返回 -1。因此,返回的输出向量的大小等于输入的大小。

    示例 1:查找向量的每个字符串中是否存在“he”的任何实例。

    str <- c("Hello", "hello", "hi", "ahey")
    regexpr('he', str)
    

    输出:

    [1] -1  1 -1  2
    

    示例 2:查找向量的每个字符串中是否存在任何以元音开头的单词实例。

    str <- c("abra", "Ubra", "hunt", "quirky")
    regexpr('^[aeiouAEIOU]', str)
    

    输出:

    [1]  1  1 -1 -1

    示例 3:查找每个字符串是否属于向量的模式 '10+1'。

    str <- c("1001", "11", "10012", "101")
    regexpr('10 + 1$', str)
    

    输出:

    [1]  1 -1 -1  1

查找和替换字符串

为了搜索和替换特定的字符串,我们可以使用两个函数,即sub()gsub() 。 sub 替换要替换的字符串的唯一第一次出现并返回修改后的字符串。另一方面, gsub()替换所有出现的要替换的字符串并返回修改后的字符串。

示例 1:将第一次出现的 'he' 替换为 'aa'

str = "heutabhe"
sub('he', 'aa', str)

输出:

aautabhe

示例 2:将所有出现的 'he' 替换为 'aa'

str = "heutabhe"
gsub('he', 'aa', str)

输出:

[1] "aautabaa"

查找和删除字符串

为了搜索和删除特定的字符串/模式,我们可以使用两个函数,即str_remove()str_remove_all()str_remove()删除唯一第一次出现的要删除的字符串/pattern 并返回修改后的字符串。另一方面, str_remove_all()删除要删除的字符串的所有出现并返回修改后的字符串。

示例 1:删除向量中第一次出现的元音

library(stringr)
x <- c("apple", "pear", "banana")
str_remove(x, "[aeiou]")

输出:

[1] "pple"  "par"   "bnana"

示例 2:删除向量中所有出现的元音

library(stringr)
x <- c("apple", "pear", "banana")
str_remove_all(x, "[aeiou]")

输出:

[1] "ppl" "pr"  "bnn"