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

Posted 数据挖掘工作室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据挖掘必备技能——正则表达式相关的知识,希望对你有一定的参考价值。

当前浏览器不支持播放音乐或语音,请在微信或其他浏览器中播放 数据挖掘必备技能——正则表达式 数据挖掘必备技能——正则表达式

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

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

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

这里用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]

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

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

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

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


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

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

\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正则表达式

必备技能之python正则表达式

如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?

R中的正则表达式及字符处理函数总结

MySQL正则表达式匹配查询

copy必备之常用正则表达式 By 其他博主