R数据读取 清理正则表达式 爬虫python and R

R/python 正则表达式

2018-12-24  本文已影响32人  一路向前_莫问前程_前程似锦

^ 定位表达式,目标开始

$定位表达式,目标结束

.匹配换行符以外的任何单个字符

( ) 将相同模式放在一起

* 匹配前面的实体出现0次或更多次

? 匹配前面的实体出现0次或1次

+ 匹配前面的实体出现1次或更多次

{n} 匹配前面的实体精确地出现n次

{n,} 匹配前面的实体至少出现n次

{n.m} 匹配出现次数在n和m次之间

[] 包含,默认是一个字符长度
[^] 不包含,默认是一个字符长度
|
\ 转义
[A-Z] 26个大写字母
[a-z] 26个小写字母
[0-9] 0至9数字
[A-Za-z0-9]26个大写字母、26个小写字母和0至9数字
分割

分割语法:

\d:匹配0-9之间的任一数字,相当于[0-9]
\w:匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_]
\s :用于查找空白字符。空白字符可以是:<strong>空格符、制表符、回车符 、换行符、垂直换行符、换页符。</strong>
[a-zA-Z0-9]:匹配任意的字母和数字
\b:匹配单词边界。
.:用于查找单个字符,除了换行和行结束符。
*:匹配前面元字符0次或多次,/ba/将匹配b,ba,baa,baaa ...
+:匹配前面元字符1次或多次,/ba
/将匹配ba,baa,baaa...
:匹配前面元字符0次或1次,/ba*/将匹配b,ba
x{3}:查找x出现3次的元素

加上括号,就是将匹配到的内荣中的括号内的东西提取出来
(.*?)为懒惰匹配,代表尽量少的匹配

R

R里面特殊的
\\d 0-9之间的一个数字
\\w a-zA-Z0-9_中间的一个
\\s 一个空格
[.] 这能匹配一个点号
[- .] 只能匹配一个-或者一个空格或者一个.

strings <- c(" 219 733 8965", "329-293-8753 ", "banana", "595 794 7569",
             "387 287 6718", "apple", "233.398.9187  ", "482 952 3315",
             "239 923 8115 and 842 566 4692", "Work: 579-499-7527", "$1000",
             "Home: 543.355.3679","13764132564")
phone <- "([2-9][0-9]{2})[- .]([0-9]{3})[- .]([0-9]{4})" ##因为有三个括号,所以返回三列
phone2 <- "([2-9][0-9]{2})[- .]([0-9]{3})[- .]([0-9]{4})
phone2 <- "(\\d{3})[- .](\\d{3})[- .](\\d{4})"
paten="^1[3|4|5|7|8][0-9]{9}$"
paten="^1[3,4,5,7,8]\\d{9}$"
str_match(strings, phone)
str_match(strings, pat)
image.png
上一篇 下一篇

猜你喜欢

热点阅读