R中有两种形式的正则表达式:扩展的和Perl风格的。在部分函数中允许通过fixed=TRUE和perl=TRUE来选择是否使用正则表达式并在perl风格和扩展风格中选择,这些函数包括:grep, grep1, sub, gsub, regexpr, gregexpr, regexec, strsplit等。还有部分函数仅允许使用扩展的正则表达式,如apropos, browseEnv, help.search, list.files和ls。
1.扩展正则表达式
实现POSIX 1003.2标准。特殊字符包括:\ | ( ) [ { ^ $ * + ? , 黑底 的字符包括:
\a BEL
\e ESC
\f FF
\n LF
\r CR
\t TAB
字符类是包含在[和]之间的字符列表,表示匹配这些字符列表中的任何一个,而[^ ]表示排除这些字符列表中的任何一个。可以通过短线来表示一个范围之间的列表,但要注意这种表达方式受到实现的影响结果可能并不相同的。还有一些预定义的字符类,以下是POSIX风格的预定义字符类:
[:alumn:] 字母与数字,[:alpha:]和[:digit:]
[:alpha:] 所有字母,[:lower:]和[:upper:]
[:blank:] 空白,空格和TAB
[:cntrl:] 控制字符,即ASCII字符集的第000到037和177号字符
[:digit:] 数字
[:graph:] 图形符号,[:alumn:]和[:punct:]
[:lower:] 小写符号
[:print:] 可打印符号 [:alumn:], [:punct:]和空格键
[:punct:] 标点符号, ! " # $ % ^ ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~
[:space:] 空格符, tab, 换行, 竖直TAB, 空格, 回车,表单
[:upper:] 大写字符
[:xdigit:] 16进制数字
. 匹配任意字符
\w 匹配一个字符
\W 匹配一个非字符
\d 匹配一个数字字符
\D 匹配一个非数字
\s 匹配一个空白字符
\S 匹配一个非空白符
重复匹配符号
? 最多一次
* 零或多次
+ 至少一次
{n} 匹配n次
{n, } 至少匹配n次
{n, m} 匹配n到m次
连接匹配
| 用来连接两个表达式,表示任意一个匹配
转义\N (N=1 - 9)表示前一个匹配的第N个子串。
2. perl风格的正则表达式
参考http://www.p