【问题标题】:I want to remove text before first <br/>我想在第一个 <br/> 之前删除文本
【发布时间】:2019-03-30 15:03:03
【问题描述】:

我想要在第一个 标记之后的文本,然后删除剩余部分文本中的 。

x=data.frame(text=c("Hi John, hope you are doing well.< br/ >Let me know, when we can meet? < br/ > I have lot to talk about")

预期输出:

"Let me know, when we can meet? I have lot to talk about"

【问题讨论】:

    标签: r regex


    【解决方案1】:

    请注意,通常使用正则表达式来解析 HTML 内容并不理想。由于您的内容没有嵌套,因此在这里可能是可靠的,我们可以尝试通过两次调用 sub 来做到这一点:

    text <- "Hi John, hope you are doing well.< br/ >Let me know, when we can meet? < br/ > I have lot to talk about"
    sub("< br/ >\\s*", "", sub(".*?< br/ >(.*)", "\\1", text))
    
    [1] "Let me know, when we can meet? I have lot to talk about"
    

    sub 的内部调用首先删除文本的前导部分,直到第一个&lt; br/ &gt; 标记(包括)。然后,对sub 的第二次调用会删除所有剩余的&lt; br/ &gt; 标签。

    【讨论】:

      【解决方案2】:

      非正则表达式的答案是拆分 "&lt; br/ &gt;" 并收集除第一个之外的所有术语并将它们粘贴在一起。

      sapply(strsplit(as.character(x$text), "< br/ >"),
                function(x) paste0(x[-1], collapse = ""))
      #[1] "Let me know, when we can meet?  I have lot to talk about"
      

      【讨论】:

        【解决方案3】:

        gsub 的另一种效率较低的方法:

        res1<-gsub("< br/ >|\\s{1,}(?<=\\n)","",gsub(".*(?=Let)","",x$text,perl=TRUE),perl=TRUE)
        gsub("  ","",res1,perl=TRUE)
        

        这会删除我之前的空格:

        [1] "Let me know,when we can meet?I have lot to talk about
        

        【讨论】:

          【解决方案4】:

          我们可以使用str_extract_all提取出现在模式(&lt; br / &gt;)之后且不是&lt;的所有文本

          library(stringr)
          paste(str_extract_all(x$text, "(?<=< br/ >)[^<]+")[[1]], collapse="")
          #[1] "Let me know, when we can meet?  I have lot to talk about"
          

          或者另一种选择是将&lt; br/ &gt; 替换为分隔符,读取为read.csv/read.tablepaste

          do.call(paste0, read.csv(text = gsub("< br/ >", ";", x$text, 
            fixed = TRUE), header = FALSE, sep=";", stringsAsFactors = FALSE)[-1])
          #[1] "Let me know, when we can meet?  I have lot to talk about"
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-11-11
            • 2011-11-02
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多