R语言【base】——grep,grepl,regexpr,gregexpr,regexec,gregexec,sub,gsub模式匹配和替换

这篇具有很好参考价值的文章主要介绍了R语言【base】——grep,grepl,regexpr,gregexpr,regexec,gregexec,sub,gsub模式匹配和替换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Package base version 4.3.2


Parameters

grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE,
     fixed = FALSE, useBytes = FALSE, invert = FALSE)

grepl(pattern, x, ignore.case = FALSE, perl = FALSE,
      fixed = FALSE, useBytes = FALSE)

sub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,
    fixed = FALSE, useBytes = FALSE)

gsub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,
     fixed = FALSE, useBytes = FALSE)

regexpr(pattern, text, ignore.case = FALSE, perl = FALSE,
        fixed = FALSE, useBytes = FALSE)

gregexpr(pattern, text, ignore.case = FALSE, perl = FALSE,
         fixed = FALSE, useBytes = FALSE)

regexec(pattern, text, ignore.case = FALSE, perl = FALSE,
        fixed = FALSE, useBytes = FALSE)

gregexec(pattern, text, ignore.case = FALSE, perl = FALSE,
        fixed = FALSE, useBytes = FALSE)

参数【pattern】:字符串,其中包含一个正则表达式(或 fixed = TRUE 时的字符串),需要在给定的字符向量中进行匹配。如果可能的话,由 as.character 强制转换为字符串。如果提供的字符向量长度为 2 或更长,则使用第一个元素并发出警告。除 regexprgrexprregexec 外,允许使用缺失值。

参数【x,text】:查找匹配的字符向量、 或可通过 as.character 强制转换为字符向量的对象。支持长向量。

参数【ignore.case】:如果为 FALSE,则模式匹配区分大小写;如果为 TRUE,则在匹配过程中忽略大小写。

参数【perl】:逻辑。是否应该使用与 Perl 兼容的 regexps

参数【value】:如果为 FALSE,则返回一个包含 grep 确定的匹配项(整数)索引的向量;如果为 TRUE,则返回一个包含匹配元素本身的向量。

参数【fixed】:逻辑。如果为 TRUE,则模式为字符串,按原样匹配。覆盖所有冲突参数。

参数【useBytes】:逻辑匹配。如果为 TRUE,匹配将逐个字节进行,而不是逐个字符进行。

参数【invert】:逻辑。如果为 TRUE,则返回不匹配元素的索引或值。

参数【replacement】:替换 subgsub 中的匹配模式。如果可能,可强制为字符。

  • 对于 fixed = FALSE,这可能包括模式的括号子表达式的转义字符 "\1" "\9"
  • 对于 perl = TRUE,它还可以包含 "\U""\L" 来将替换的其余部分转换为大写或小写,以及 "\E" 来结束大小写转换。
  • 如果提供的字符向量长度为 2 或更长,则使用第一个元素并发出警告。
  • 如果为 NA,则结果中与匹配结果相对应的所有元素都将设置为 NA。

Skills

grepgrepplregexprgregexprregexecgregexec 在字符向量的每个元素中搜索与参数【pattern】匹配的内容:它们在结果的格式和详细程度上有所不同

subgsub 分别对第一条匹配和所有匹配进行替换。

如果可能,本应是字符串或字符向量的参数会被强制为字符。

每种函数都有三种操作模式:

  1. fixed = TRUE:使用完全匹配。
  2. perl = TRUE:使用 Perl 风格的正则表达式。
  3. fixed = FALSEperl = FALSE:使用 POSIX 1003.2 扩展正则表达式(默认)。

这两个 *sub 函数的区别仅在于 sub 只替换模式的第一次匹配,而 gsub 则替换所有匹配。如果参数【replacement】包含未在参数【pattern】中定义的转义字符,结果将是未转义的(但转义符通常被认为是"")。

对于 regexprgrexprregexecgregexec,如果参数【pattern】NA 则报错,而在其他函数中参数【pattern】允许 NA,并匹配 NA

grepgrepl 都将参数【x】中的缺失值视为与非缺失参数【pattern】不匹配项。

useBytes = TRUE 的主要作用是避免在多字节本地环境中出现无效输入和虚假匹配的错误/警告,但对于 regexpr,它改变了输出的解释。如果发现任何输入被标记为 "bytes",就会强制转换。

在多字节语言中,忽略字母大小写的匹配对字节的意义不大,只有在 useBytes = TRUE 的情况下,才能对 ASCII 字符有效。

perl = TRUEregexpr gregexpr 允许 Python 风格的命名捕获,但不支持长向量输入。

对当前语言中的无效输入最多警告 5 次。

使用 perl = TRUE 对非 ASCII 字符进行忽略字母大小写的匹配,取决于 PCRE 库在编译时是否支持 "Unicode",PCRE2 默认支持 "Unicode"。


Value

grep(value = FALSE) 返回参数【x】中匹配(或不匹配,invert = TRUE)的索引向量。这将是一个整数向量,除非输入是一个长向量,那么将是一个双向量。

grep(value = TRUE) 返回一个字符向量,其中包含参数【x】的匹配元素(经过强制转换后,保留名称,但不保留其他属性)。

grepl 返回一个逻辑向量(参数【x】的每个元素是否匹配)。

subgsub 会返回一个长度和属性与参数【x】相同的字符向量(在可能强制转换为字符后)。

  • 未被替换的字符向量参数【x】元素将原封不动地返回(如果 useBytes = FALSE,则包括任何已声明的编码)。
  • 如果 useBytes = FALSE,非 ASCII 编码的替换结果通常会是带有标记的 UTF-8 编码(例如,如果有 UTF-8 输入,除非 fixed = TRUE,否则会是多字节本地编码)。这些字符串可以用 enc2native 重新编码。
  • 如果任何输入标记为 "bytes",则字符向量参数【x】中被替换的元素将标记为 "bytes" 返回,但未被替换元素的编码标志未指定(可能是原始编码或 "bytes")。
  • 如果没有任何输入被标记为 "bytes",但明确给出 useBytes = TRUE,那么即使在被替换的元素上,编码标志也是未指定的(可能是 "bytes" "unknown",可能在当前编码中无效)。
  • 不鼓励混合使用 "bytes" 和其他标记的编码,但如果仍有需要,可以使用 iconv 将结果重新编码,例如将无效字节适当替换为 UTF-8 编码。

regexpr 返回一个与文本长度相同的整数向量,表示第一个匹配项的起始位置;如果没有匹配项,则返回 -1;属性 "match.length" 是一个整数向量,表示匹配文本的长度(如果没有匹配项,则返回 -1)。

  • 匹配位置和长度是以字符为单位的,除非使用了 useBytes = TRUE,此时匹配位置和长度是以字节为单位的(仅 ASCII 码匹配时也是如此:无论哪种情况,都会在结果上设置值为 TRUE 的属性 useBytes)。
  • 如果使用命名捕捉,还有 "capture.start""capture.length" "capture.names" 属性。

gregexpr 返回一个与文本长度相同的列表,其中每个元素的形式都与 regexpr 的返回值相同,只是给出了每个(不相连的)匹配的起始位置。

regexec 返回一个与文本长度相同的列表,其中每个元素的值要么是 -1(如果没有匹配项),要么是一个整数序列,包含匹配项的起始位置以及与模式的括号子表达式相对应的所有子串,属性 "match.length" 是一个向量,给出匹配项的长度(如果没有匹配项,则返回 -1)。位置和长度以及属性的解释遵循 regexpr

gregexec 返回的结果与 regexec 相同,只是为了适应每个文本元素有多个匹配项的情况,每个匹配项的整数序列都被编入一个矩阵的列中,每个有匹配项的文本元素有一个矩阵。

如果由于资源限制导致匹配失败(尤其是 perl = TRUE 时),则视为不匹配,通常会发出警告。文章来源地址https://www.toymoban.com/news/detail-766015.html

到了这里,关于R语言【base】——grep,grepl,regexpr,gregexpr,regexec,gregexec,sub,gsub模式匹配和替换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • R语言【base】——unlink():删除文件和目录

    Package  base  version 4.2.0 unlink() 删除 参数【x】 指定的文件或目录。 参数【x】 :包含要删除的文件或目录名称的字符向量。 参数【recursive】 :逻辑值。应该递归地删除目录吗? 参数【force】 :逻辑值。是否应该更改权限 (如果可能) 以允许删除文件或目录? 参数【expand】 :逻

    2024年01月24日
    浏览(35)
  • R语言【base】——rep():复制向量和列表的元素

    Package  base  version 4.2.0 rep  复制 参数【x】 中的值。它是一个泛型函数,这里描述了(内部)默认方法。 对于两种常见情况, rep.int 和 rep_len 是更快的简化版本。在内部,它们是泛型的,因此可以为它们定义方法。 参数【x】 :一个向量(任何模式,包括列表)或一个因子,或

    2024年01月21日
    浏览(35)
  • R语言【base】——library(),require():加载/连接并列出包

    Package  base  version 4.2.0 library 和 require 加载并连接附加包。 参数【package,help】:包的名称,以名称或字面值字符串或字符串的形式给出,具体取决于是否使用character.only为FALSE(默认)或TRUE。 参数【pos】:检索的名称空间的位置。也可以是当前检索位置的名称,由search()指定。

    2024年02月22日
    浏览(38)
  • R语言【base】——apply():在数组边距上应用函数

    Package  base  version 4.2.0 返回通过将函数应用于数组或矩阵的边距而获得的向量或数组或值列表。 参数【X】 :一个数组,包括一个矩阵。 参数【MARGIN】 :一个给出下标的向量,函数将作用于这个下标。例如,对于矩阵, 1 表示行, 2 表示列, c(1,2) 表示行和列。其中 参数【

    2024年02月03日
    浏览(42)
  • 【C语言】C语言编程实战:Base64编解码算法从理论到实现(附完整代码)

    🧑 作者简介 :阿里巴巴嵌入式技术专家,深耕嵌入式+人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍 :分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导、简历面试辅导、技术架构设计优化、开发外包等服

    2024年03月13日
    浏览(39)
  • R语言【base】——nrow(),ncol(),NCOL(),NROW():返回数组的行数/列数

    Package  base  version 4.2.0 nrow和nrow返回x中存在的行数或列数。ncol和nrow将向量处理为1列矩阵,甚至是0列长度的向量,与as.matrix()或cbind()兼容,参见示例。 参数【x】:一个向量、数组、数据框或 NULL。 长度为1或NULL的整数,后者仅适用于ncol和nrow。

    2024年02月21日
    浏览(36)
  • R语言【base】——dir.exists()和dir.create()目录和文件权限的操作

    Package  base  version 4.3.2 参数【path】 :是一个字符向量,包含一个路径名。 参数【paths】 :字符向量,其中包含文件或目录路径。 参数【showWarnings】 :逻辑值。是否应显示失败警告? 参数【recursive】 :逻辑值。是否应该创建路径中除最后一个元素之外的其他元素?如果为

    2024年02月04日
    浏览(44)
  • 关于sub-gaussian 和 sub-exponential随机变量的集中不等式

    Concentration inequalities under sub-Gaussian and sub-exponential conditions sub-guassian范数和sub-exponential范数: 如果 f k ( X ) f_{k}(X) f k ​ ( X ) 为sub-gaussian随机变量,则有如下的定理: 应用: 1.向量值集中 2. PCA的一致界 3. Radmacher复杂度 回顾一下,Radmacher复杂度为

    2024年02月10日
    浏览(33)
  • R语言【base】——.Random.seed(),RNGkind(),RNGversion(),set.seed():随机数生成器

    Package  base  version 4.2.0 .Random.seed是一个整数向量,包含R中生成随机数的随机数生成器(RNG)状态。它可以保存和恢复,但不应该被用户更改。 RNGkind是一个更友好的接口,用于查询或设置正在使用的RNG类型。 RNGversion在早期的R版本中可以用来设置随机生成器(为了再现性)。 set

    2024年02月22日
    浏览(54)
  • MATLAB基础——subs函数

    作用是将函数中的旧符号替换为新符号,用法如下: 表示将符号表达式S中的符号变量OLD替换为新的值NEW 一共四种用法,实例如下: 首先定义三个符号变量和一个符号表达式 将变量x替换为数值 将x替换为变量z 同时将x和y分别替换为1和z 将单变量替换为数组

    2024年02月05日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包