regex - R 风格正则表达式中的匹配转义字符

标签 regex r pcre

我正在尝试编写一个正则表达式,将所有不包含 * 的值替换为 NA。有人可以解释如何正确否定 R 风格(PCRE?)正则表达式中的转义字符吗?

temp<-data.frame(c("hi","keep**",NA),c("keep***",NA,"xxx"))
lapply(temp,function(x){gsub("[^\\*]",NA,x)}) #This did not work like I thought it would

目标

NA    keep***
keep* NA
NA    NA

最佳答案

看来主要问题是您仅将一个不是星号的字符与 [^\\*] 相匹配。 ,并将其替换为 NA使用gsub ,而您需要替换整个值(=字符串)。

使用^[^*]*$ :

  • ^ - 字符串开头
  • [^*]* - 匹配 0+ 不是 * 的字符(由于末尾有 * 量词) ([^...] 是一个否定字符类,它匹配该类中定义的字符以外的所有字符)
  • $ - 字符串结尾。

由于正则表达式用于 gsub没有perl=T ,您不能在字符类中使用转义字符,TRE(源自 POSIX)正则表达式风格禁止使用转义字符。

关于regex - R 风格正则表达式中的匹配转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36722414/

相关文章:

c++ - 如何将 pcre_study 与 pcrecpp 一起使用?

regex - GNU grep 的基本/扩展和 PCRE (`-P` ) 正则表达式之间有什么区别?

javascript正则表达式不起作用

javascript - 用于解析任何 css 字体的正则表达式

r - 如何从相当于 R 的 Python 数据帧列表中选择特定数据帧?

r - 如何在R中可视化覆盖圆形图的集群?

java - 用于匹配任意两个 HTML 标签之间的正则表达式

javascript - 如何使用正则表达式突出显示字符串中的多个关键字/词?

r - 替换和删除列名称中的字符

r - R中的外部包