我在R数据框列中有一些数据,如下所示。我想保留url
并删除其他所有内容,如果我得到url
,则保持列不变。
问题是可能有前导空格/没有前导空格,*
字符,结束额外字词或$
等等。
kick-boxer.com
easy hotel.com.my-kl s
weebly-charge.com
vietnamtouronsal e.com
mes*wix.com*113963740
borderlinx.com
www.aliexpress.com
www.aliexpress.com
skr*skrill.com
此外,我无法在R
中设置占有选项。基本上不要放弃我所持有的角色。
gsub( '(^|.*?|\\s+)(http\\:\\/\\/|https\\:\\/\\/)?([a-z0-9][a-z0-9\\-]*\\.)+(org|edu|com|co.sg|info)(.*?|$|\\s+)' ,'\\2\\3\\4\\5', test$url)
问题是由于(^|.*?|\\s+)
引起的(.*?|$|\\s+)
和尾随.*
贪婪地吃掉了这些角色 - 让我留下“a.com
”
有什么建议吗?
答案 0 :(得分:0)
将此作为答案,使@ mylogind的评论可以解析。
使用测试数据
kick-boxer.com
easy hotel.com.my-kl s
weebly-charge.com
vietnamtouronsal e.com
mes*wix.com*113963740
borderlinx.com
www.aliexpress.com
www.aliexpress.com
skr*skrill.com
并且只想提取适当的域,提出了以下多步骤解决方案。
test$rem4 = gsub( '(?i)(\*)' ,' * ', test$rem4)
test$rem4 = gsub( '(?i)^(.*)(\\.)([a-z]{2,6})(.*)$' ,'\\1\\2\\3 \\4', test$rem4)
test$website1 = gsub( '^(www\\.)?([a-z0-9]{2,}\\.)+(org|edu|com|co\\.sg|info|co\\.[a-z]{2}|sg|me|net)\\s+(.*|$)' ,'\\1\\2\\3', test$rem4)
test$website2 = gsub( '^(.*)\\s+(www\\.)?([a-z0-9]{2,})(\\.)(org|edu|com|co\\.sg|info|co\\.[a-z]{2}|sg|me|net)$' ,'\\2\\3\\4\\5', test$rem4)
test$website3 = gsub( '^(.*)\\s+(www\\.)?([a-z0-9]{2,})(\\.)(org|edu|com|co\\.sg|info|co\\.[a-z]{2}|sg|me|net)\\s+(.*)$' ,'\\2\\3\\4\\5', test$rem4)