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] | 匹配未包含的任意字符 | |||