Chr*_*llo 1 regex r text-mining
基本上,我正在寻找一个正则表达式来选择所有标点符号,除了URL内的标点符号.
本质上,如果我有字符串:
This is a URL: https://test.com/ThisIsAURL !
Run Code Online (Sandbox Code Playgroud)
并删除它应该成为的所有匹配:
This is a URL https://test.com/ThisIsAURL
Run Code Online (Sandbox Code Playgroud)
gsub("[[:punct:]]", "", x)删除所有标点符号,包括URL.我尝试使用负面外观来选择https后使用的标点符号,但这是不成功的.
在我需要的情况下,所有URL都是Twitter链接式URL https://t.co/.他们没有结束.com.他们也没有一个以上的背斜塞(/ThisIsAURL).但是,理想的是,我希望正则表达式尽可能多样化,能够在任何URL上成功执行此操作.
您可以匹配并捕获组1中类似URL的模式https?://\S*,然后匹配任何标点符号并替换为组1的反向引用以还原结果字符串中的URL:
x <- "This is a URL: https://test.com/ThisIsAURL !"
trimws(gsub("(https?://\\S*)|[[:punct:]]+", "\\1", x, ignore.case=TRUE))
## => [1] "This is a URL https://test.com/ThisIsAURL"
Run Code Online (Sandbox Code Playgroud)
正则表达式是
(https?://\S*)|[[:punct:]]+
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示.
细节
(https?://\S*)- 第1组(\1从替换模式引用):
https?://- https://或http://\S* - 0+非空白字符| - 要么[[:punct:]]+- 1个标点符号(正确的标点符号和符号_)