正则表达式 爬虫

正则表达式-01

2019-02-23  本文已影响5人  医科研

理解正则表达式
此前在数据处理过程中多次遇到过正则表达式的问题,也没有过多去深究
在此做一定的归纳整理,正则表达式在处理文本时显得很迫切,通俗的理解就是
有些符号约定转义为其它意思,这样才使得正则表达式具备很强大灵活的文本处理能力,下面
用一些示例来说明

正则表达式转义字符

空白元字符   [\b]    回退(并删除)一个字符(backspace)
\f  换页符
\n  换行符
\r  回车符
\t  制表符(tab)
\v  垂直制表符

### 匹配数字与非数字
\d  任何一个数字字符,等价于[0-9]
\D  任何一个非数字字符,等价于^[0-9]

### 匹配字母\非字母与数字
\w  任何一个字母数字字符(大小写均可以)或下划线字符(等价于[a-zA-Z0-9])
\W  任何一个非字母数字或下划线字符(等价于[^a-zA-Z0-9])

### 匹配空白字符
\s  任何一个空白字符(等价于[\f\n\r\t\v])
\S  任何一个非空白字符(等价于[^\f\n\r\t\v])

### 特殊字符
#.  可以匹配任何单个的字符字母数字甚至.字符本身。同一个正则表达式允许使用多个.字符。
\\  转义字符,如果要匹配就要写成“\\(\\)”
|   表示可选项,即|前后的表达式任选一个
^   取非匹配
$   放在句尾,表示一行字符串的结束
()  提取匹配的字符串,(\\s*)表示连续空格的字符串
[]  选择方括号中的任意一个(如[0-2]和[012]完全等价,[Rr]负责匹配字母R和r)
{}  前面的字符或表达式的重复次数。如{5,12}表示重复的次数不能小于5,不能多于12,否则都不#匹配
*   匹配零个或任意多个字符或字符集合,也可以没有匹配
+   匹配一个或多个字符,至少匹配一次
?   匹配零个或一个字符

应用举例

Example-1

text<-c("I love da ke ai tong xue")
text
nchar(text)#计算字符数
length(text)#元素个数

#查找含有da组合的单词
grep("[Dd]a",text )#不区分大小写,返回的是位置
grep("[D]a",text)#大写
grep("[d]a",text)#小写

Example-2

strsplit()函数用于字符串分割,其中split是分割参数。所得结果以默认以list形式展示

text
x1<-strsplit(text,split = "\\s+")#s表示任意空白字符,+表示至少匹配一次
# 匹配一个或以上的空白字符(括空格、制表符和换行符等分割,第一个\起到转义作用。
unlist(x1)

# 分割空格
x2<-strsplit(text,split=" ")#分割空格
unlist(x2)

# 处处分割
unlist(strsplit(text,split=""))#注意表示空格时的区别

# strsplit默认支持正则表达式,设定参数fixed=T则不支持正则
x = "asdas\\sasdasd"
strsplit(x,split = "\\s")#匹配空白字符
strsplit(x,split = "\\s",fixed = T)#匹配\\s处分割
#strsplit(x,split = "\s")#报错因为没有转义,一个反斜杠是非法的

参考资料:https://www.cnblogs.com/wheng/p/6262737.html

上一篇 下一篇

猜你喜欢

热点阅读