前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文本挖掘|你好,正则表达式!

文本挖掘|你好,正则表达式!

作者头像
黑妹的小屋
发布2020-08-05 11:14:42
6900
发布2020-08-05 11:14:42
举报

一串字符中提取英文?

文本信息: “Ta说群众笑脸smile是最好的扶贫成绩单1234”,按照以往的思路是知道英文字符在文本中的起始位置与终止位置,再根据位置提取出来。当数据量小的时候,这种思路操作是没什么毛病的,但是,当数据量大时,显然这种方法又土又麻烦。

当使用正则表达式时,这个问题好解决多了。采用ringr 包中的 str_extract_all 函数对字符对象x按照“[A-z]”抽取规则进行抽取,最终将字符中的所有大小写英文都提取出来了。

代码语言:javascript
复制
> library(stringr)
> x<-' Ta说群众笑脸smile是最好的扶贫成绩单1234 '
> str_extract_all(x,'[A-z]') [[1]]
[1] "T" "a" "s" "m" "i" "l" "e"

正则表达式还可以处理更复杂的字符形式,比如匹配电子邮箱格式。

代码语言:javascript
复制
> 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、匹配数字

代码语言:javascript
复制
> x<-' Ta说群众笑脸smile是最好的扶贫成绩单1234 '
> gsub('[0-9]','*',x)
[1] " Ta说群众笑脸smile是最好的扶贫成绩单**** "

2、匹配英文

代码语言:javascript
复制
[A-z]”匹配大小写英文,“[A-Z]”匹配大写英文,“[a-z]”匹配小写英文
> x<-' Ta说群众笑脸smile是最好的扶贫成绩单1234 '
> gsub('[a-z]','*',x)
[1] " T*说群众笑脸*****是最好的扶贫成绩单1234 "

3、匹配汉字

代码语言:javascript
复制
 “[\u4E00-\u9FA5]”机械匹配汉字
> x<-' Ta说群众笑脸smile是最好的扶贫成绩单1234 '
> gsub('[\u4E00-\u9FA5]','*',x)
[1] " Ta*****smile*********1234 "

4、多条件匹配

代码语言:javascript
复制
> x<-' Ta说群众笑脸smile是最好的扶贫成绩单1234 '
> gsub('[A-Z0-9\u4E00-\u9FA5]','*',x)
[1] " *a*****smile************* "

5、轮流匹配

代码语言:javascript
复制
使用|代表或条件
> x<-' Ta说群众笑脸smile是最好的扶贫成绩单1234 '
> gsub('([a-z]|[0-9]|[\u4E00-\u9FA5])','*',x)
[1] " T************************ "

6、“非”的使用

代码语言:javascript
复制
以“^”符号表示“非”
> x<-' Ta说群众笑脸smile是最好的扶贫成绩单1234 '
> gsub('[^\u4E00-\u9FA5]','*',x)
[1] "***说群众笑脸*****是最好的扶贫成绩单*****"

7、寻找字符串模式

匹配带有任意数字(部分匹配)的字符串

代码语言:javascript
复制
> y<-c("Abu", "a123", "1346", "5")
> grep("\\d", y)
[1] 2 3 4

\\d包含"^"和"$", 匹配只有一个数字的字符串

代码语言:javascript
复制
> y<-c("Abu", "a123", "1346", "5")
> grep("^\\d$", y)
[1] 4

那么如何使用分组提取数据并自定义读取数据呢?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 菜鸟学数据分析之R语言 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档