【问题标题】:Regex: match words, omit newline正则表达式:匹配单词,省略换行符
【发布时间】:2015-02-03 17:40:26
【问题描述】:

我是正则表达式(和 stackoverflow 顺便说一句)的新手,并尝试使用 R 从中提取“真实”单词:

"\n\n\nclone\nstar\n\n\n\n\nbrain\nstar\n\n\n\n\ncalculator\nstar\n\n\n\n\nadding machine\nstar\n\n\n\n\nartificial intelligence\nstar"

所以我想匹配:克隆、大脑、计算器、加法机、人工智能。

我用(?<=\\n)(.*?)(?=\\nstar) 尝试过它似乎很接近......但它仍然没有给我想要的东西。我想我不必指定 \n 而是使用一些省略换行注释?

【问题讨论】:

  • 试试gsub('\n', ' ', str1) 你本可以显示预期的输出
  • 你期待什么输出?
  • 是您的\n 真正的换行符还是文字反斜杠后跟n?

标签: regex xml r


【解决方案1】:
(?<=\\n)((?:(?!\\n).)*?)(?=\\nstar)

试试这个。查看演示。

https://regex101.com/r/vD5iH9/63

.*? 将捕获包括\n 在内的所有内容。因此请使用lookahead 检查\n 是否未被捕获。

【讨论】:

  • 可能,我问了他这个问题。
  • @CasimiretHippolyte 我从使用的正则表达式 OP 中猜到了。
  • 你猜对了!这正是我所需要的。正则表达式一开始可能会很混乱……尤其是在 R 中。非常感谢!
【解决方案2】:

你是不是想把单词抽出来?

strsplit(x,'\n+')

或匹配它们?

gsub('[a-zA-Z]+','HELLOWORLD',x)

【讨论】:

    【解决方案3】:

    如果你想得到一个单词向量

    x <- "\n\n\nclone\nstar\n\n\n\n\nbrain\nstar\n\n\n\n\ncalculator\nstar\n\n\n\n\nadding machine\nstar\n\n\n\n\nartificial intelligence\nstar"
    x <- gsub("\n"," ",x)
    x <- unlist(strsplit(x," "))
    x <- x[x != ""]
    

    【讨论】:

      【解决方案4】:

      这是通过一个相对简单的正则表达式来完成的:

      library(gsubfn)
      
      strapplyc(x, "([^\n]*).star", simplify = c)
      

      给予:

      [1] "clone"  "brain"  "calculator"  "adding machine"         
      [5] "artificial intelligence"
      

      注意:下面是正则表达式的可视化:

      ([^\n]*).star
      

      Debuggex Demo

      【讨论】:

        【解决方案5】:

        只需在 \nstar 或 \n 上拆分,并可选择删除前导字符以避免第一个字符串为空。

        strsplit(x, "(\nstar|\n)+")   # OR
        strsplit(gsub("^\n*", "", x), "(\n|star)+")[[1]]
        [1] "clone"                   "brain"                   "calculator"             
        [4] "adding machine"          "artificial intelligence"
        

        【讨论】:

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