从第三个到最后一个和最后一个句点之间提取所有文本

时间:2017-09-25 10:53:09

标签: r regex

我的文字看起来像:

txt <- Name, Name. Title. Pub. Year; Details.

我想只提取Pub。

我可以使用以下方式提取年份和详细信息:

gsub(".*\\.(.*)\\..*", "\\1", txt)

如何在R?

中提取第三个到最后一个和倒数第二个句点(只是Pub)之间的所有内容

1 个答案:

答案 0 :(得分:3)

您可以通过以下方式使用sub(因为您需要执行单次搜索和替换操作):

txt <-"Name, Name. Title. Pub. Year; Details."
sub(".*\\.([^.]*)(?:\\.[^.]*){2}$", "\\1", txt)
# => [1] " Pub"

请参阅R demo

<强>详情

  • .* - 任意0个字符,尽可能多
  • \\. - .
  • ([^.]*) - 第1组:除.
  • 以外的任何0 +字符
  • (?:\\.[^.]*){2} - 连续2个序列
    • \\. - .
    • [^.]* - 除.
    • 以外的任何0 +字符
  • $ - 字符串结束。