在R中使用正则表达式,数据示例如下:
word <-c("Look at this and say: Oh ya," ,
"Oh thanks!",
"what?! Oh my god!",
"oh, No!",
"What's that for?",
"Don't you see that? oh you don't care.")
所以我想 grep 模式 Oh 或 oh:
wordy = grep("Oh|oh", word, , value = TRUE)
wordy
查看结果:
[1] "Look at this and say: Oh ya,"
[2] "Oh thanks!"
[3] "what?! Oh my god!"
[4] "oh, No!"
[5] "Don't you see that? oh you don't care."
有什么方法可以获得匹配的模式但不是整行? 例如我想删除 [1]、[3]、[5] 中“Oh|oh”之前的词,但仍保留“Oh|oh”之后的词
请给我一些提示!非常感谢!
最佳答案
如果你想删除单词,一种方法是使用 (g)sub
。例如在这种情况下删除匹配模式之前的所有内容....
sub( "^.*(oh|Oh)(.*$)" , "\\1\\2" , wordy )
#[1] "Oh ya," "Oh thanks!" "Oh my god!" "oh, No!"
#[5] "oh you don't care."
^
字符串开头的零宽度 anchor ,.*
任何字符,(oh|Oh)
的反向引用组所需的模式,以及 (.*$)
第二个反向引用组,用于匹配模式之后直到字符串末尾的所有内容($
)。
替换 "\\1\\2"
定义了我们想要输出的内容,即第一组和第二组括号中匹配的所有内容。因此删除所有匹配 oh|Oh
的内容。
关于regex - 从行中提取模式,例如grep ("Oh|oh",单词,值 = TRUE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20120681/