ITPub博客

首页 > > > R语言正则表达式:反向引用

R语言正则表达式:反向引用

作者:浪花小雨滴 时间:2019-11-08 14:48:05 0 删除 编辑

作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量、机器学习、数据可视化、应用统计建模、知识图谱等,著有《R语言数据高效处理指南》(《R语言数据高效处理指南》(黄天元)【摘要 书评 试读】- 京东图书,《R语言数据高效处理指南》(黄天元)【简介_书评_在线阅读】 - 当当图书)。知乎专栏:R语言数据挖掘。邮箱:huang.tian-yuan@qq.com.欢迎合作交流。


反斜杠在R语言正则表达式中一般用来转义,但是其实可以用来做反向引用。下面举例说明:我们想获得句子中所有叠字的名称,句子为“请储婷婷、魏香香、龚菲菲、高圆圆、徐天天、欧阳娜娜同学到台上来。”

library(tidyverse)
string = "请储婷婷、魏香香、龚菲菲、高圆圆、徐天天、欧阳娜娜同学到台上来。"

str_extract_all(string,"(.)\\1") %>% unlist()

[1] "婷婷" "香香" "菲菲" "圆圆" "天天" "娜娜"

如果需要获得三字名称,并包含姓氏,可以尝试:

str_extract_all(string,"(.)(.)\\2") %>% unlist()
[1] "储婷婷" "魏香香" "龚菲菲" "高圆圆" "徐天天" "阳娜娜"

比较遗憾的是,四字是无法识别的,错误识别为“阳娜娜”。这是一个没有办法的事情,但是我们知道这种反向引用在一些场景中是非常实用的,最多能够标记到9个分组(也就是\\9),基本够用了。

原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    39939