2015-10-31 7 views
0

Возможно ли использовать функцию Regex, которая игнорирует НЕКОТОРЫЕ знаки препинания (не «/») в конце строк URL-адреса (например, пунктуация в конце строка url, за которой следует пробел) при извлечении? При извлечении URL-адреса, я получаю периоды, parenthesizes, знаки вопроса и восклицательных знаков в конце строки я извлечь так, например:В R Regex, который игнорирует некоторую пунктуацию в конце строки URL

findURL <- function(x){ 
    m <- gregexpr("http[^[:space:]]+", x, perl=TRUE) 
    w <- unlist(regmatches(x,m)) 
    op <- paste(w,collapse=" ") 
    return(op) 
} 

x <- "find out more at http://bit.ly/SS/VUEr). check it out here http://bit.ly/14pwinr)? http://bit.ly/108vJOM! Now!" 

findURL(x) 

[1] http://bit.ly/SS/VUEr).http://bit.ly/14pwinr)? http://bit.ly/108vJOM! 

И

findURL2 <- function(x){ 
    m <- gregexpr("www[^[:space:]]+", x, perl=TRUE) 
    w <- unlist(regmatches(x,m)) 
    op <- paste(w,collapse=" ") 
    return(op) 
} 


y <- "This is an www.example.com/store/locator. of the type of www.example.com/Google/Voice. data I'd like to extract www.example.com/network. get it?" 

findURL2(y)  

[1] www.example.com/store/locator. www.example.com/Google/Voice. www.example.com/network. 

Есть ли способ изменить эти функции так, что, если a ! или , ИЛИ (ЕСЛИ ВОЗМОЖНО) a ). )? )! или ), находится в конце строки, за которой следует пробел (то есть, если пунктуация: периоды, скобки, вопросительные знаки, восклицательные знаки или запятые на конец строки URL, за которой следует пробел) t o НЕ извлекать их?

ответ

2

Используйте положительный предпросмотр, а также вы можете комбинировать оба ...

findURL <- function(x){ 
    m <- gregexpr("\\b(?:www|http)[^[:space:]]+?(?=[^\\s\\w]*(?:\\s|$))", x, perl=TRUE) 
    w <- unlist(regmatches(x,m)) 
    op <- paste(w,collapse=" ") 
    return(op) 
} 

x <- "find out more at http://bit.ly/SS/VUEr). check it out here http://bit.ly/14pwinr)? http://bit.ly/108vJOM! Now!" 
y <- "This is an www.example.com/store/locator. of the type of www.example.com/Google/Voice. data I'd like to extract www.example.com/network. get it?" 

findURL(x) 
findURL(y) 

# [1] "http://bit.ly/SS/VUEr http://bit.ly/14pwinr http://bit.ly/108vJOM" 

# [1] "www.example.com/store/locator www.example.com/Google/Voice www.example.com/network" 
+0

Можно ли использовать, что в функции, чтобы избавиться от тех же строк URL? Например: 'clean.text <- function (x) { x <- gsub (" \\ b (?: Www | http) [^ [: space:]] +? (? = [^ \\ s \\ w] * (?: \\ s | $)) "," ", x) x }'? – Robert

+0

ya ................ –