R里面用字符串来表示正则表达式, 当涉及到转义字符时有些绕,比如
想用\.来表示.,字符串形式是\\.
想用\\来表示\,字符串形式是\\\\
1. 两个锚点
^
和$
分别表示字符串开头和结尾匹配,可以一起使用来表示整词匹配。
2. 字符类与字符选项
常见的,比如:
\d表示任意数字
\s表示任意空白字符,如空格、制表符、换行符
[abc]三者之一
[^abc]三者之外
|表示或, 优先级很低
关于括号(),需注意:
通常( )只表示分组,若确实想匹配 ( 或 ) 则需要转义
> str_view(c("grey","gray"),"gr(e|a)y") #两个字符串都会匹配到
> str_view("(we) are one","\\(we\\)") #会匹配(we)
3. 重复次数控制
?: 0次或1次
+: 1次或多次
*: 0次或多次
{n}: 匹配n次
{n,m}: 匹配n次到m次
{n,}、{,m}同理
关于贪婪匹配
,默认情况下正则表达式会匹配尽可能长的字符串。
4. 回溯引用
str_view("abc def:abc,def", "(ab.)\\s(de.):\\1,\\2") #\1和\2分别匹配第一和第二个括号里面的字符串
网友评论