正则表达式是描述字符串(strings)集合的一个模式(pattern),概念比较抽象,举个例子就比较好理解,比用.(点,英文句号)表示任意一个非空字符的话,那么A.就可以用来表示AA,AB...。
1.元字符
上面这个简单的例子看到,用.(英文的句号)可以表示任意一个非空的字符,聪明的我们自然会问,还有没有别的符号代表“特殊的意义”?以下这些符号具有特殊的意义:
. 任意一个非空字符,如A.可表示AB,AC,等等
| 表示或者的意思,如A|B表示A或者B,
( ) 表示模式分组,也可以理解为数学里面的优先计算,比如AB|C 究竟表达的意思是AB或C还是AB或AC呢,不必担心,加个括号就明朗。A(B|C),就表示AB或AC,
[] 表示内容之一,如[a-z]就表示a-z中的一个
表示前面的内容,匹配多少次;次数在n-m之间
^ 表示在字符串的开头,^放在[]里表示非
$ 表示字符串尾部
* 量词,表示前面匹配n个
+ 一个或多个
? 零个或多个
\ 转义
\\t tab
\\n换行
2.类字符
\\d 表示数字0-9,
\\D 表示非数字,
\\s 表示空白字符(包括空格、制表符、换行符等),
\\S 表示非空白字符,
\\w 表示字(字母和数字),
\\W 表示非字,
\num 其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\\1”匹配两个连续的相同字符。
3.边界字符
\\b匹配一个单词边界,也就是指单词和空格间的位置。
\\B匹配非单词边界。
\\右空
4.正则表达式符号运算顺序
()最优先,然后是表示重复次数的操作,即:* + {},接下来是连接运算(其实就是几个字符放在一起,如abc),最后是表示可选项的运算|;这些运算规则并不重要,重要的是你想哪里优先,就在哪里加小括号。
下面链接下载R正则Cheat Sheet
https://www.rstudio.com/wp-content/uploads/2016/09/RegExCheatsheet.pdf
领取专属 10元无门槛券
私享最新 技术干货