gpt4 book ai didi

regex - 查找第三次出现的特殊字符并删除 R 中之前的所有内容

转载 作者:行者123 更新时间:2023-12-01 09:52:29 24 4
gpt4 key购买 nike

我有这个包含 URL 的示例向量。我的目标是获取 URL 的路径。

sample1 <- c("http://tercihblog.com/indirisu/docugard/", "http://funerariagomez.com/js/ggogle/a201209e3f79b740337b7bdb521630fe/", 
"http://www.t-online.de/contacts/2015/08/atlas.html/", "http://mgracetimber.ie/wp-content/themes/Banner/db/box/",
"http://zamartrade.com/cs/DHL/DHL%20_%20Tracking.htm/", "http://dunhamengineering.com/menu/Auto-loadgoogleDrive/Document.Index/",
"http://www.indiegogo.com/guide/forum/2014/09/forgot-password/",
"http://raetc.com/wp-admin/Service/clients/votre-compte/en-ligne/imp-rem.fr/",
"http://www.lidanhang.com/img/?https://secure.runescape.com/m=weblogin/loginform.ws?mod=www&amp;hwjklxlamp;ssl=0&amp;dest/",
"http://www.sudaener.com/wp-includes/js/crop/dropbox/", "https://zeustracker.abuse.ch/blocklist.php/",
"https://zeustracker.abuse.ch/blocklist.php?download=hostsdeny/",
"https://zeustracker.abuse.ch/blocklist.php?download=iptablesblocklist/",
"https://zeustracker.abuse.ch/blocklist.php?download=snort/",
"https://zeustracker.abuse.ch/blocklist.php?download=squiddomain/"
)

我最初的尝试是这样的:
gsub('http://[^/]+/','/',sample1)

但是,这不适用于具有 https:// 的 URL。 .一个合适的解决方案是在第三次出现 "/" 之前删除所有内容。 .我想知道如何使用 regex这样做,如果有办法使用 substring .

谢谢

最佳答案

gsub一起去真的很明智在这里,因为代码更清晰,更直接。

如果你想在第三个之前删除所有 / , 用

> gsub('^(?:[^/]*/){3}','/',sample1)
[1] "/indirisu/docugard/"
[2] "/js/ggogle/a201209e3f79b740337b7bdb521630fe/"
[3] "/contacts/2015/08/atlas.html/"
[4] "/wp-content/themes/Banner/db/box/"
[5] "/cs/DHL/DHL%20_%20Tracking.htm/"
[6] "/menu/Auto-loadgoogleDrive/Document.Index/"
[7] "/guide/forum/2014/09/forgot-password/"
[8] "/wp-admin/Service/clients/votre-compte/en-ligne/imp-rem.fr/"
[9] "/img/?https://secure.runescape.com/m=weblogin/loginform.ws?mod=www&amp;hwjklxlamp;ssl=0&amp;dest/"
[10] "/wp-includes/js/crop/dropbox/"
[11] "/blocklist.php/"
[12] "/blocklist.php?download=hostsdeny/"
[13] "/blocklist.php?download=iptablesblocklist/"
[14] "/blocklist.php?download=snort/"
[15] "/blocklist.php?download=squiddomain/"
^(?:[^/]*/){3}火柴:
  • ^ - 字符串开头
  • (?:[^/]*/){3} - 恰好 3 次:
  • [^/]* - 除 / 之外的零个或多个字符
  • / - 文字 /特点。

  • Cath suggests更精确的正则表达式修复,但也许您想添加 ^在开始时只匹配字符串的开头:
    gsub('^https?://[^/]+/','/',sample1)
    ^ ^
    ? (贪婪)量词表示出现一次或零次,从而使 s之后 http可选的。它与 gsub('^(https|http)://[^/]+/','/',sample1) 相同(但更有效) .

    您可能还想让正则表达式不区分大小写,添加 ignore.case = TRUE .

    关于regex - 查找第三次出现的特殊字符并删除 R 中之前的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35088337/

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