基于匹配整个字符串的前瞻性正则表达式在 R 中附加单元格

Appending cells in R based on lookahead regex matching an entire string

我对 R 和正则表达式还是个新手,但我正在努力实现以下目标;假设我有以下类型的数据 table:

Title               | URL
whosebug.com   | https://whosebug.com
google.com          | http://
youtube.com         | https://youtube.com
overclock.net       | https://

我想将 URL 列中的单元格附加到 Title 列中的相应值,以防 URL 仅包含 http:// 或 [=16] =],因此所需的输出如下所示:

Title               | URL
whosebug.com   | https://whosebug.com
google.com          | http://google.com
youtube.com         | https://youtube.com
overclock.net       | https://overclock.net

为此,我尝试将 sub 函数与前瞻性正则表达式结合使用,如下所示:

dt$URL <- sub("(?:^|\W)https?://(?:$|\W)", "\1", dt$Title, perl = TRUE)

dt$URL <- sub("\s(https?://)", "\1", dt$Title, perl = TRUE)

dt$URL <- sub("\b(https?://\b)", "\1", dt$Title, perl = TRUE)

但是上面的 none 会产生所需的输出。问题是它根本没有 append/replace 任何东西,可能是因为正则表达式不匹配任何东西,或者如果存在的数据不仅仅是 http:// 或 https://,它也会匹配,即它还将匹配一个完整的域名(我不想要)。根据上面的示例输入,我应该如何调整我的代码以产生所需的输出?

谢谢!

url.col <- c("https://whosebug.com", 
             "http://", 
             "https://youtube.com", 
             "https://")

title.col <- c("whosebug.com", 
               "google.com", 
               "youtube.com", 
               "overclock.net")

ifelse(grepl("^(\w*http(s)?://)$", url.col),  # if pattern matches url.col elem:
       paste0(url.col, title.col),    # join content of cols together and return!
       url.col)                       # but if not return url.col element 'as is'

[1] "https://whosebug.com" 
[2] "http://google.com"        
[3] "https://youtube.com"       
[4] "https://overclock.net"