文本挖掘|你好,正则表达式!
时间:2022-07-22
本文章向大家介绍文本挖掘|你好,正则表达式!,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一串字符中提取英文?
文本信息: “Ta说群众笑脸smile是最好的扶贫成绩单1234”,按照以往的思路是知道英文字符在文本中的起始位置与终止位置,再根据位置提取出来。当数据量小的时候,这种思路操作是没什么毛病的,但是,当数据量大时,显然这种方法又土又麻烦。
当使用正则表达式时,这个问题好解决多了。采用ringr 包中的 str_extract_all 函数对字符对象x按照“[A-z]”抽取规则进行抽取,最终将字符中的所有大小写英文都提取出来了。
> library(stringr)
> x<-' Ta说群众笑脸smile是最好的扶贫成绩单1234 '
> str_extract_all(x,'[A-z]') [[1]]
[1] "T" "a" "s" "m" "i" "l" "e"
正则表达式还可以处理更复杂的字符形式,比如匹配电子邮箱格式。
> eg<-c('abc@sina.com','add@piilgu','lxl@163.cn','9157@qq.com')
> pattern<-'[A-z0-9]+@[A-z0-9]+\.(com|cn)'
> gsub(pattern,'*',eg)
[1] "*" "add@piilgu" "*" "*"
pattern正则表达式含义为:大小写字母或数字(一个或多个)@大小写字符与数字(一个或多个).com 或 cn 。
1、匹配数字
> x<-' Ta说群众笑脸smile是最好的扶贫成绩单1234 '
> gsub('[0-9]','*',x)
[1] " Ta说群众笑脸smile是最好的扶贫成绩单**** "
2、匹配英文
[A-z]”匹配大小写英文,“[A-Z]”匹配大写英文,“[a-z]”匹配小写英文
> x<-' Ta说群众笑脸smile是最好的扶贫成绩单1234 '
> gsub('[a-z]','*',x)
[1] " T*说群众笑脸*****是最好的扶贫成绩单1234 "
3、匹配汉字
“[u4E00-u9FA5]”机械匹配汉字
> x<-' Ta说群众笑脸smile是最好的扶贫成绩单1234 '
> gsub('[u4E00-u9FA5]','*',x)
[1] " Ta*****smile*********1234 "
4、多条件匹配
> x<-' Ta说群众笑脸smile是最好的扶贫成绩单1234 '
> gsub('[A-Z0-9u4E00-u9FA5]','*',x)
[1] " *a*****smile************* "
5、轮流匹配
使用|代表或条件
> x<-' Ta说群众笑脸smile是最好的扶贫成绩单1234 '
> gsub('([a-z]|[0-9]|[u4E00-u9FA5])','*',x)
[1] " T************************ "
6、“非”的使用
以“^”符号表示“非”
> x<-' Ta说群众笑脸smile是最好的扶贫成绩单1234 '
> gsub('[^u4E00-u9FA5]','*',x)
[1] "***说群众笑脸*****是最好的扶贫成绩单*****"
7、寻找字符串模式
匹配带有任意数字(部分匹配)的字符串
> y<-c("Abu", "a123", "1346", "5")
> grep("\d", y)
[1] 2 3 4
\d包含"^"和"$", 匹配只有一个数字的字符串
> y<-c("Abu", "a123", "1346", "5")
> grep("^\d$", y)
[1] 4
那么如何使用分组提取数据并自定义读取数据呢?
- 【Scikit-Learn 中文文档】内核岭回归 - 监督学习 - 用户指南 | ApacheCN
- 可视化(番外篇)——在Eclipse RCP中玩转OpenGL
- 养良好C语言编程风格,编优质C语言代码,这才是C语言的开始
- IBM让《星球大战》中的各种黑科技变成现实
- 学习SVM(二) 如何理解支持向量机的最大分类间隔
- 解密区块链:不可编辑性带来的问题
- 学习SVM(三)理解SVM中的对偶问题
- 学习SVM(四) 理解SVM中的支持向量(Support Vector)
- 转行数据挖掘和机器学习(四)
- 了解ASP.NET MVC几种ActionResult的本质:JavaScriptResult & JsonResult
- 学习SVM(五)理解线性SVM的松弛因子
- 了解ASP.NET MVC几种ActionResult的本质:EmptyResult & ContentResult
- 可视化(番外篇)——SWT总结
- 新年必看!预测2018年将是区块链爆发的行情
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Centos7 keepalived安装并监控mysql实现自动切换
- Centos7 mqtt集群安装
- CentOS7 mysql5.7安装并配置主主同步
- CentOS7 nginx安装并负载mysql
- CentOS7 zabbix安装并实现其它服务器服务监控报警与自动恢复
- CentOS7 Zookeeper安装
- 【STM32F429开发板用户手册】第38章 STM32F429的FMC总线应用之是32路高速IO扩展
- 【STM32F429开发板用户手册】第39章 STM32F429的FMC总线应用之SDRAM
- react项目搭建
- 深入理解Java泛型(三)-泛型擦除及其相关内容
- webpack实战——预处理器(loader)【下篇】
- JAVA位运算等运算符总结
- 算法实现,用机器学习模拟一个opencv的边缘识别算法
- 开源公共组件仓库的更新日志应该如何写
- 判断ABAP代码是否处于update模式下运行的工具类