美文网首页
54.关于模式匹配的一些函数(四)

54.关于模式匹配的一些函数(四)

作者: 心惊梦醒 | 来源:发表于2021-09-06 07:55 被阅读0次

【上一篇:53.关于模式匹配的一些函数(三)】
【下一篇:55.关于正则表达式在其他函数中的应用】

    模式匹配和替换相关的函数包含以下几种功能:
    1. 确定匹配模式的字符串
    2. 找到匹配的位置
    3. 提取匹配的内容
    4. 用新值替换匹配项
    5. 基于匹配拆分字符串


4. 用新值替换匹配项

    str_replace()和str_replace_all()函数可实现这个功能。

str_replace(string, pattern, replacement)
str_replace_all(string, pattern, replacement)

    replacement指定新值,长度为1或者长度与string或pattern的向量。
    对str_replace_all()函数,可设置c(pattern1 = replacement1)向量实现string 向量中每个元素的替换。
    replacement还可以用反引用的方式实现match内容的重复或交换位置。

5. 基于匹配拆分字符串

    str_split()和str_split_fixed()函数用来拆分字符串。

str_split(string, pattern, n = Inf, simplify = FALSE)
str_split_fixed(string, pattern, n)

    str_split()返回一个与输入等长的list;str_split_fixed()返回一个矩阵。
    参数n指定返回向量的长度,对str_split_fixed()函数来说,如果n>实际拆分后的长度,则多余位置用NA填充。
    simplify=TRUE表示返回一个矩阵。


    对pattern来讲,还可以指定用character、line、sentence 和word拆分,需要通过boundary()函数实现。boundary()函数是使用修饰函数控制匹配行为类函数中的一个,其他还有fixed()、regex()、coll()。boundary()的意思是匹配事物之间的边界

boundary(type = c("character", "line_break", "sentence", "word"),
  skip_word_none = NA, ...)

type参数指定将哪种类型视为边界,例如
character:认为每个character是一个边界,所以返回的边界值就是每个character本身
其他同理。

x <- "This is a sentence.  This is another sentence."
str_view_all(x, boundary("word"))

    regex()的意思是使用ICU正则表达式,这是正则匹配的默认行为。

regex(pattern, ignore_case = FALSE, multiline = FALSE,
  comments = FALSE, dotall = FALSE, ...)
ignore_case:忽略大小写
multiline:如果为TRUE, $和^匹配每行的开头和结尾。如果默认值为FALSE,则只匹配输入的开始和结束。
comments:如果为TRUE,空格和以#开头的注释将被忽略。用\转义文字空格。

    fixed()的意思是比较字符串中的litaral字节。这是非常快的,但对于非ascii字符集来说通常不是这样。

fixed(pattern, ignore_case = FALSE)

    coll()的意思是Compare strings respecting standard collation rules.。collation有"校对"的意思。可以理解为通过指定locale参数,coll()函数直接按照某种语言规则解析pattern,所以速度会比fixed()快。

coll(pattern, ignore_case = FALSE, locale = "en", ...)

【上一篇:53.关于模式匹配的一些函数(三)】
【下一篇:55.关于正则表达式在其他函数中的应用】

相关文章

网友评论

      本文标题:54.关于模式匹配的一些函数(四)

      本文链接:https://www.haomeiwen.com/subject/ebbcwltx.html