数据挖掘必备技能——正则表达式


640?wx_fmt=png640?wx_fmt=png

正则表达式是数据挖掘必备技能,正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

640?wx_fmt=png 640?wx_fmt=png

这里用R语言的正则函数来演示

常用匹配模式

  • \d:任何一个数字字符 等价[0-9]

  • \D:任何一个非数字字符 等价[^0-9]

  • \w:任何一个数字或者字母、下划线,相当于[a-zA-Z0-9]

  • \W:任何一个非数字或者字母

  • \\:转义字符

其它匹配

  • .:匹配任何一个字符

  • |:可选则匹配任意一个

  • ^:以特定模式开头开头或者表示逻辑非

  • $:放在末尾,表示特定的结尾模式

  • ():提取匹配的字符串

  • []:里面的表示可选

  • {}:表达式重复最多次数

  • *:匹配0次或者1次以上

  • +:匹配1次以上,至少匹配一次

  • ?:匹配0次或者一次


这里用R语言的stringr包的str_extract()这个函数和str_extract_all()演示,它们的区别是一个匹配成功一个就不再匹配,一个表示会把所有满足匹配条件的匹配出来。下面拿它们来演示,开始两个函数都会演示一下,为了说明它们的区别,为了减少文章篇幅,让大家浏览的轻松,之后就只拿str_extract()做演示。


先定义一个字符串:

s <- '123abc456'


\d:任何一个数字字符 等价[0-9]

640?wx_fmt=jpeg

后面“+”表示匹配连续一段数字字符。

下面只用str_extract()演示,因为它们区别只是是否匹配所有,所以只演示一个就行了。

\D:任何一个非数字字符 等价[^0-9]


640?wx_fmt=jpeg

\w:任何一个数字或者字母、下划线,相当于[a-zA-Z0-9]

640?wx_fmt=jpeg

\W:任何一个非数字或者字母

> str_extract(s,'\\W')
[1] NA

\\:转义字符

> s <- '123abc456\\'
> str_extract(s,'\\\\')
[1] "\\"

.:匹配任何一个字符

> str_extract(s,'.')
[1] "1"
> str_extract(s,'.+')
[1] "123abc456\\"

|:可选则匹配任意一个

> str_extract(s,'1|9')
[1] "1"

^:以特定模式开头开头或者表示逻辑非

> s
[1] "123abc456\\" "456def123"  
> str_extract(s,'^123')
[1] "123" NA  

$:放在末尾,表示特定的结尾模式

> s
[1] "123abc456\\" "456def123" > str_extract(s,'123$')
[1] NA "123"

():提取匹配的字符串

> str_extract(s,'123(.*?)456')
[1] "123abc456" NA

[]:里面的表示可选

> s
[1] "123abc456\\" "456def123"  
> str_extract(s,'[123,456]+')
[1] "123" "456"

{}:表达式重复最多次数

> s
[1] "123123abc//"
> str_extract(s,'(123){2}')
[1] "123123"
> str_extract(s,'(123){1}')
[1] "123"

*:匹配0次或者1次以上

> s
[1] "123abc456\\" "def" > str_extract(s,'\\d*')
[1] "123" ""

+:匹配1次以上,至少匹配一次

> str_extract(s,'\\d+')
[1] "123" NA

?:匹配0次或者一次

> s
[1] "123abc456\\" "def" > str_extract(s,'456?')
[1] "456" NA

当然了,喜欢用python的可以用python的re.search()函数练习正则表达式语法!


欢迎留言、提建议、意见,觉得不错,记得【点赞、分享】!

猜你可能喜欢



终于等到你了!


再华丽的词藻也不过简单的分享!

爱生活、爱原创、爱分享!

点击【阅读原文】有惊喜。

你在学习Python数据分析的时候,是否遇到过在这些问题? 别慌!这些都是数据科学入门常见问题。从入门到上手再到解决实际问题,数据科学看似复杂,但如果你掌握了正确的学习方法,完全可以极速入门。 【职场人进阶必备  数据分析/挖掘一点通】 如今的职场上,90%以上的岗位都会涉及数据问题。 以产品文案岗位为例,在一个新产品推向市场之前,文案需要考虑: 此时,可以关注一下市场上已有的相关产品推广数据,如:哪些文案打开率更高?哪些文案转化更好?目标用户的购买习惯如何? 以此作为下一步工作开展的依据,对产品文案工作者来说,可以少走很多弯路。 学会数据分析/挖掘,等于站巨人的肩膀上工作,轻松且高效。 【爬虫、数据分析、数据挖掘知识点三合一】数据问题一网打尽 本课程将知识点悉数融入实战项目,不空谈语法,帮助学员在实践中获取知识,目标是:让学员能自主完成数据采集、数据分析与数据挖掘。 学习完本课程,你可以熟练掌握: 【实战案例超实用,轻松拥有“睡后收入”!】 本课程以股票案例为主线,串联爬虫、数据分析以及数据挖掘多个知识点。 通过实战案例演练,你可以全面掌握股票收益的分析和预判方法,在收获新技能的同时,也有机会获得“睡后收入”! 四大优势: 三重权益:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值