【问题标题】:Remove urls from strings从字符串中删除 url
【发布时间】:2014-03-02 14:13:23
【问题描述】:

我有以下字符串,存储在对象sentence中:

sentence <- "aazdlubtirol: RT @tradeDayTrades: sister articles \"$AAPL Dancing in a Burning Room\" January 2013  http://t.co/tkuCRfLy  \" $AAPL vs $AAPL \"  August 2011 http://t.co/863HkVjn"

我正在尝试使用 gsub 删除以 http 开头的网址:

sentence &lt;- gsub('http.*','',sentence)

但是,它会替换 http 之后的所有内容:

aazdlubtirol: RT @tradeDayTrades: sister articles \"$AAPL Dancing in a Burning Room\" January 2013

我想要的是:

aazdlubtirol: RT @tradeDayTrades: sister articles \"$AAPL Dancing in a Burning Room\" January 2013 \" $AAPL vs $AAPL \" August 2011

我正在尝试清理 url,所以如果字符串包含 http 我想删除 url。我找到了一些解决方案,但它们对我没有帮助。

【问题讨论】:

  • 为您的替换组添加一个空间:gsub('http.* ', '', sentence)
  • @Justin 很好的答案我试过gsub('http.*\\s', '', sentence),但它不起作用。也许你可以添加你的答案。
  • 我觉得奇怪的是 \\s 在单个空格处不起作用。
  • @Justin 我尝试使用空间,但它不起作用。
  • 您的问题过于复杂。如果我理解正确,您的意思是:“如何使用正则表达式从字符串中删除所有 url?”。

标签: r url replace gsub


【解决方案1】:

为您的替换组添加一个空间:

gsub('http.* *', '', sentence)

或者使用\\s,这是空格的正则表达式:

gsub('http.*\\s*', '', sentence)

根据评论,.* 将匹配任何内容,并且正则表达式是贪婪的。相反,我们应该多次匹配一个或多个非空白字符,后跟零个或多个空格:

gsub('http\\S+\\s*', '', sentence)

【讨论】:

  • 请注意 .* 也将匹配空白...如果您的意思是有零个或多个非空白字符后跟零个或模式空白字符,您确实需要使用: gsub('http\\S*\\s*', '', sentence)
  • 试过了:sentence [1] "traderclubtirol: RT AnniDayTrades: 姐妹文章\"$AAPL Dancing in a Burning Room\" 2013 年 1 月 t.co/tkuCRfLy \" $AAPL vs $AAPL \" 2011 年 8 月t.co/863HkVjn" > sentence = gsub('http.*\\s*', '', sentence) > sentence [1] "traderclubtirol: RT AnniDayTrades: 姐妹文章\"$AAPL Dancing in a Burning Room\" 2013 年 1 月" > > 但它会删除第一个 url 之后的所有内容
  • @Justin:你可以更进一步,将字符串末尾的网址与gsub('http\\S+\\s*|http\\S+$', '', sentence)匹配
  • @jbaums \\s* 将匹配 0 个或更多空格,因此它仍应捕获它。您也可以使用'\\s*http\\S+\\s*' 来摆脱剩余的尾随空格..
  • 我认为gsub("(http[^ ]*)", "", sentence) 也可以。
猜你喜欢
  • 2014-08-26
  • 2014-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多