gpt4 book ai didi

R - 匹配除 URL 内的所有标点符号的正则表达式

转载 作者:行者123 更新时间:2023-12-02 08:10:15 36 4
gpt4 key购买 nike

基本上,我正在寻找一个正则表达式来选择所有标点符号,但 URL 内的标点符号除外。

本质上,如果我有字符串:

This is a URL: https://test.com/ThisIsAURL !

并删除它应该成为的所有匹配项:

This is a URL https://test.com/ThisIsAURL

gsub("[[:punct:]]", "", x) 删除所有标点符号,包括 URL 中的标点符号。我曾尝试使用否定的后视来选择 https 之后使用的标点符号,但没有成功。

在我需要它的情况下,所有 URL 都是 Twitter 链接样式的 URL https://t.co/。它们不以 .com 结尾。它们也没有多个反斜杠 (/ThisIsAURL)。但是,理想情况下,我希望正则表达式尽可能多才多艺,能够在任何 URL 上成功执行此操作。

最佳答案

您可以将类似 URL 的模式(如 https?://\S*)匹配并捕获到第 1 组,然后匹配任何标点符号并替换为第 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"

R demo online .

正则表达式是

(https?://\S*)|[[:punct:]]+

regex demo .

详情

  • (https?://\S*) - 第 1 组(用替换模式中的 \1 引用):
    • https?:// - https://http://
    • \S* - 0+ 个非空白字符
  • | - 或
  • [[:punct:]]+ - 1+ 标点符号(正确的标点符号、符号和 _)

关于R - 匹配除 URL 内的所有标点符号的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47933405/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com