【问题标题】:Remove hashtags from beginning and end of tweets in R从 R 中推文的开头和结尾删除主题标签
【发布时间】:2018-08-21 22:07:30
【问题描述】:

我正在尝试从 R 中的字符串开头删除主题标签。 例如:

 x<- "I didn't know it could be #boring. guess I need some fun #movie #lateNightThoughts"

我想删除字符串末尾的 #lateNightThoughts 和 #movie 主题标签。结果:

 - "I didn't know it could be #boring. guess I need some fun"

我试过了:

stringi::stri_replace_last_regex(x,'#\\S+',"")

但它只删除最后一个标签。

- "I didn't know it could be #boring. guess I need some fun #movie "

知道如何获得预期的结果吗?

编辑:

如何从文本开头删除主题标签? 例如:

x<- "#Thomas20 I didn't know it could be #boring. guess I need some fun #movie #lateNightThoughts"

【问题讨论】:

    标签: r regex tweets


    【解决方案1】:

    你可以使用

    >  x<- "I didn't know it could be #boring. guess I need some fun #movie #lateNightThoughts"
    > sub("\\s*\\B#\\w+(?:\\s*#\\w+)*\\s*$", "", x)
    [1] "I didn't know it could be #boring. guess I need some fun"
    

    或者,如果您不关心要开始匹配的第一个 # 的上下文,您甚至可以使用

    sub("(?:\\s*#\\w+)+\\s*$", "", x)
    

    请参阅regex demo

    详情

    • \s* - 零个或多个空格
    • \B - 在当前位置之前,可以有字符串或非单词字符的开头(这通常用于确保您不匹配“单词”内的#,所以如果您不需要它,你可以删除这个非单词边界)
    • # - 一个 # 字符
    • \w+ - 1 个或多个单词字符(字母、数字或 _
    • (?:\s*#\w+)* - 零次或多次出现:
      • \s* - 零个或多个空格
      • # - 一个 # 字符
      • \w+ - 1+ 个单词字符
    • \s* - 零个或多个空格
    • $ - 字符串结束。

    【讨论】:

    • 谢谢,第一个正则表达式正在运行。如果我还需要删除文本开头的主题标签怎么办?我更新了问题。
    • @ZahraHnn 这更简单,sub("^(?:\\s*#\\w+)+\\s*", "", x)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 2019-06-19
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    相关资源
    最近更新 更多