R语言正则表达式语法共享(更新中)

R语言正则表达式语法

在之前文章stringr包里面提到需要用到正则表达式的去处理一些杂乱数据,尤其是在处理从网络爬取的数据,而非自由平台的数据时候,数据是非常脏的。

R语言可运用正则表达式的函数

   1、有基础包自带函数grep, grepl, regexpr, gregexpr,regexec,sub,gsub 这些函数的参数都一样

grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE, useBytes = FALSE, invert = FALSE)

常用参数说明

pattern:正则表达式或者固定字符串

x:需要处理的数据向量/文本

ignore.case:是否区分大小写

perl:是否用perl兼容的参数

invert:是否返回不匹配的值

2、stringr包中的匹配、提取函数(如:str_replace、str_replace_all、str_detect、str_match、str_extract)同样可以根据正则表达式语法构造所需要的通配符。

正则表达式基本语法:

在R正则表达式里预定义的字符类选集

[:digit:] 数字:0-9 [:punct:] 标点符号
[:lower:] 小写字母:a-z [:graph:] 图形字符:[:alnum:]、[:punct:]
[:upper:] 大写字母:A-Z [:blank:] 空格字符:空格和制表
[:alpha:] 字母字符:a-zA-Z [:space:] 空字符:空格、制表、换行和其他空字符
[:alnum:] 数字和字母字符 [:print:] 可打印字符:[:alnum:]、[:punct:]、[:space:]

R正则表达式里的量化符

前面的元素是可选的,并且最多匹配一次 *? 重复任意次,但尽可能少重复
* 前面的元素会被匹配0次或者多次 +? 重复1次或更多次,但尽可能少重复
+ 前面的元素会被匹配1次或者多次 ?? 重复0次或1次,但尽可能少重复
{n} 前面的元素会正好被匹配n次 {n,m}? 重复n到m次,但尽可能少重复
{n,} 前面的元素会被匹配n次或者多于n次 {n,}? 重复n次以上,但尽可能少重复
{n,m} 前面的元素至少会被匹配n次,但不超过m次    

R中部分含有特殊含义的符号

\w 单词字符:[[:alnum:]] \W 非单词字符:^[[:alnum:]]
\s 空字符:[[:blank:]] \S 非空字符:^[[:blank:]]
\d 数字:[[:digit:]] \D 非数字:^[[:digit:]]
\b 单词的边界 \B 非单词的边界
\< 单词的起始 \> 单词的结尾
. 匹配除换行符以外的任意字符 $ 匹配字符串的结束
^ 匹配字符串的开始 \ 转义字符,用于查找元字符本身,如:.,*
name|loc 匹配 name 或 loc    
[nameloct] 匹配所包含的任意一个字符    
[^nameloct] 匹配未包含的任意字符    

 

更新中,请谅解》》》》》》》》》》》》》》》》》》》》》》》》》

你可能感兴趣的:(正则表达式)