R语言 字符串匹配

R语言 字符串匹配

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

关于字符串匹配的操作

寻找一个字符串

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

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

语法:

grep(pattern, string, ignore.case=FALSE)

参数:

pattern: 一个正则表达式模式。

string:要搜索的字符向量。

ignore.case: 是否在搜索中忽略大小写。这里ignore.case是一个可选的参数,默认设置为FALSE。

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

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

输出:

[1] 2 4
R

正如你注意到的,在上面的例子中,’He’没有被考虑,因为’H’和’h’的情况不同。但是如果你想忽略这些情况,可以将参数ignore.case设为True,默认设置为False。

示例2:要在字符串中找到所有’he’的实例,而不考虑大小写。

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

输出:

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

语法:

grepl(pattern, string, ignore.case=FALSE)

参数:
pattern: 一个正则表达式模式。

string:要搜索的字符向量。

ignore.case: 是否在搜索中忽略大小写。这里ignore.case是一个可选的参数,默认设置为FALSE。

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

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

输出:

[1] FALSE
R

示例 2: 查找字符串中是否有’he’的实例。

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

输出:

[1] TRUE
R
  • regexpr() function: 它在字符串的每个元素中搜索一个模式的出现。例如,如果一个向量由’n’个字符串组成,所有’n’个字符串都会被搜索到该模式。如果找到该模式,将返回该模式的索引。如果没有找到,则返回-1。因此,返回的输出向量的大小等于输入的大小。

语法:

regexpr(pattern, string, ignore.case = FALSE)

参数:

pattern: 一个正则表达式模式。

string:要搜索的字符向量,其中每个元素都被单独搜索。

ignore.case:是否在搜索中忽略大小写。这里ignore.case是一个可选的参数,默认情况下被设置为FALSE。

示例 1:查找矢量中每个字符串中是否有 “he “的实例。

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

输出:

[1] -1  1 -1  2
R

示例 2: 找出矢量的每个字符串中是否有以元音开头的单词实例。

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

输出:

[1]  1  1 -1 -1
R

示例 3: 要找出每个字符串是否属于矢量的’10+1’模式。

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

输出:

[1]  1 -1 -1  1
R

查找和替换字符串

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

语法:

sub(pattern, replaced_string, string)

gsub(pattern, replaced_string, string)

参数:

pattern: 正则表达式模式。

string: 要搜索被替换的模式实例的向量。

ignore.case: 在搜索中是否忽略大小写。这里ignore.case是一个可选的参数,默认设置为FALSE。

例子1: 用 “aa “替换第一次出现的 “he”。

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

输出

aautabhe
R

例2: 用 “aa “替换所有出现的 “he”。

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

输出

[1] "aautabaa"
R

查找和删除字符串

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

语法:

str_remove(string, pattern, ignore.case=False)

参数:

pattern: 正则表达式模式。

string: 要搜索要删除的模式实例的字符向量。

ignore.case: 在搜索中是否忽略大小写。这里ignore.case是一个可选的参数,默认设置为FALSE。

例子1: 删除矢量中第一次出现的元音字母

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

输出

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

例2: 去除矢量中出现的所有元音

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

输出

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册