当前位置: 首页 > news >正文

在线观看免费网站网址开源之家

在线观看免费网站网址,开源之家,网络游戏的特点,如何打开本地安装的WORDPRESSR 语言中 gsub 与正则表达式详解(含 POSIX 与 Perl 风格实例) 在 R 语言中,字符串处理是非常常见的需求,R 语言中的 gsub() 函数则具有字符串替换的功能。本文将通过两个实例,帮助你深入理解 R 的 gsub()、POSIX 字符…

R 语言中 gsub 与正则表达式详解(含 POSIX 与 Perl 风格实例)

在 R 语言中,字符串处理是非常常见的需求,R 语言中的 gsub() 函数则具有字符串替换的功能。本文将通过两个实例,帮助你深入理解 R 的 gsub()、POSIX 字符类、Perl 风格正则、以及一些常见的坑点与进阶技巧。

文章目录

  • R 语言中 `gsub` 与正则表达式详解(含 POSIX 与 Perl 风格实例)
    • 1 基础实例:POSIX 字符类
      • 1.1 `gsub()` 函数的语法规则
      • 1.2 模式 `"[[:alpha:]]+"`
      • 1.3 替换串 `"$"`
      • 1.4 匹配过程
    • 2 Perl 风格实例:`\\b\\w+\\b`
      • 2.1 `perl = TRUE`
      • 2.2 模式 `\\b\\w+\\b`
      • 2.3 替换串 `"$"`
      • 2.4 匹配过程
    • 3 常见坑与进阶
      • 3.1 标点与连字符
      • 3.2 数字与下划线
      • 3.3 Unicode 与多语言
      • 3.4 只替换首个或限定长度
    • 4 总结

1 基础实例:POSIX 字符类

来看第一个例子:

gsub("[[:alpha:]]+", "$", "Two words")
# [1] "$ $"

1.1 gsub() 函数的语法规则

  • 语法:gsub(pattern, replacement, x, ...)
  • 作用:将字符串 x所有(global)匹配 pattern 的部分替换为 replacement
    对应的 sub() 只会替换第一个匹配。

1.2 模式 "[[:alpha:]]+"

  • [[:alpha:]]:POSIX 命名字符类,表示“字母字符”,等价于 A–Z / a–z(并受 locale/编码影响)。
  • 外层方括号 [...]:字符类,匹配其中任意一个字符。
  • +:量词,表示“前面的模式重复一次或多次”。
  • 综合上述两点:[[:alpha:]]+ 匹配“一串连续字母”。

1.3 替换串 "$"

  • replacement 里,$ 是字面量,不会触发正则引用。
  • 注意,在 R 的分组回溯引用用的是 \\1\\2…,不是 $1

1.4 匹配过程

"Two words" 中:

  • Two → 匹配 → 替换为 $
  • 空格保留
  • words → 匹配 → 替换为 $
    结果:"$ $"

2 Perl 风格实例:\\b\\w+\\b

再看一个更灵活的例子,使用 Perl 风格正则:

gsub("\\b\\w+\\b", "$", "Two words", perl = TRUE)
# [1] "$ $"

2.1 perl = TRUE

  • 启用 PCRE(Perl-Compatible Regular Expressions)引擎。
  • 支持 \\b\\w、前后查看等高级语法。

2.2 模式 \\b\\w+\\b

注意:在 R 字符串中反斜杠需要转义,所以正则 \b 要写成 \\b

  • \\b:单词边界(word boundary),匹配位置,不消耗字符。
  • \\w:单词字符,等价于 [A-Za-z0-9_]
  • +:匹配一个或多个单词字符。
  • 综合:匹配“完整单词”,即两侧是边界的 \\w+

2.3 替换串 "$"

  • 同样是字面量 $

  • 若要保留原文,需要捕获组:

    gsub("(\\b\\w+\\b)", "<\\1>", "Two words", perl=TRUE)
    # "<Two> <words>"
    

2.4 匹配过程

"Two words"

  • 起始处 → 边界 → Two 匹配 → $
  • 空格保留
  • words 匹配 → $
    结果:"$ $"

其实前面所举的两个例子稍加改编后可以用来统计一段文本的单词数,请读者思考如何编写 R 语言代码可以实现这个功能?🤔
欢迎读者在评论区分享你的代码!


3 常见坑与进阶

3.1 标点与连字符

  • \\w 不包含连字符 -、撇号 '

    gsub("\\b\\w+\\b", "$", "don't well-known", perl=TRUE)
    # "$ $" (don 和 t;well 和 known)
    
  • 想把它们算作词的一部分:

    gsub("\\b[\\w'-]+\\b", "$", "don't well-known", perl=TRUE)
    

3.2 数字与下划线

  • \\w 包含数字与 _。若只想匹配纯字母词:

    gsub("\\p{L}+", "$", "C3PO and Über", perl=TRUE)
    

3.3 Unicode 与多语言

  • 默认 \\w 偏向 ASCII,不适合中文/重音字母。

  • 更稳的方法是使用 Unicode 属性:

    gsub("\\p{L}+", "$", "Über façade 中 文", perl=TRUE)
    
  • 或用 (*UCP) 提示 PCRE 按 Unicode 分类:

    gsub("(*UCP)\\b[\\p{L}\\p{N}_]+\\b", "$", "Über façade 中文", perl=TRUE)
    

3.4 只替换首个或限定长度

  • 替换首个词:

    sub("\\b\\w+\\b", "$", "Two words", perl=TRUE)
    
  • 替换长度 ≥4 的词:

    gsub("\\b(?=\\w{4,}\\b)\\w+\\b", "$", "a few longerwords", perl=TRUE)
    

4 总结

  • gsub() = 全局替换,sub() = 只进行首次替换。
  • POSIX 字符类(如 [[:alpha:]])适合基础 ASCII 场景。
  • perl=TRUE 开启 PCRE,引入 \\b\\w、前后查看等高级特性。
  • 替换串中 $ 是普通字符;回溯引用用 \\1
  • 多语言/特殊符号场景下,建议使用 \\p{...}(*UCP)
http://www.dtcms.com/a/528169.html

相关文章:

  • AI降重软件开发方案:基于Python的文本语义重构系统
  • 小杰-自然语言处理(seven)——transformer系列——自注意力(self-attention)
  • 带代码示例的 HTML 标签实操手册
  • fastapi 前端文件配置 python fastapi服务添加前端打包好的静态文件
  • 计算机网络自顶向下方法3——详解分组交换时延、丢包、吞吐量
  • 外贸 网站推广青岛胶南市城乡建设局网站
  • GitHub等平台形成的开源文化正在重塑推荐人
  • webrtc代码走读(六)-QOS-FEC冗余度配置
  • F036 vue+flask中医热性药知识图谱可视化系统vue+flask+echarts+mysql
  • 电脑效能跃升利器 金士顿KVR内存焕新机
  • Bootstrap UI 编辑器
  • MySQL联合查询详解
  • webrtc代码走读(五)-QOS-FEC原理
  • 车载诊断架构 ---DTC快照中DID大小顺序是怎么要求的?
  • Windows 10 下 VS Code 配置 C++ 开发环境(MinGW)
  • 天津低价网站建设怎样做淘宝联盟的网站
  • 福建网站建建设方案太原关键词优化报价
  • 深耕 Rust:核心技术解析、生态实践与高性能开发指南
  • 深入浅出 Tokio 源码:掌握 Rust 异步编程的底层逻辑
  • 北京网站建设管庄1天学会搭建营销网站
  • 基于SEH的异常捕获与MiniDumpWriteDump深度解析
  • C语言练习题
  • Postman应用实战
  • Vue-Loader 深度解析:原理、使用与最佳实践
  • HCIP第二次作业(VRRP/STP/VLAN/Eth-trunk/NAT)
  • 外国设计网站推荐自己学网站建设
  • ASP.NET Core中创建中间件的几种方式
  • Docker安装思源笔记使用指南
  • 需求登记网站怎么做免费高清图片素材网站推荐
  • SpringBoot集成Elasticsearch | Java High Level Rest Client(HLRC)方式