regex - 从行中提取模式,例如grep ("Oh|oh",单词,值 = TRUE)

标签 regex r

在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/

相关文章:

javascript - IE8 正则表达式查找换行符

html - 使用 powershell 检索 HTML 中的文本

r - 与 data.tables 的多个连接/合并

r - 如何使用 2 个不同的 y 轴进行绘图?

r - 在 R 中的 ggplot2 中一起使用 stat_function 和 facet_wrap

java - 正则表达式或 Java 将某些区域转换为较低的字符串

php - 将 IIS 重写转换为 Nginx 重写语法?

regex - 为什么无法使用正则表达式解析 HTML/XML : a formal explanation in layman's terms

r - 从r中给定的字符串中提取日期

r - 从浏览器中突出显示/查找散点图中的数据点