gpt4 book ai didi

regex - 如何提取既匹配某些模式又位于其他两个字符串之间的字符串

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

抱歉,如果这是重复的..我不清楚 SO 上已有的内容如何执行此特定任务..

我的目标是在一些 html 代码中找到压缩文件的文件名。文件名在 <a href=...> 中html block ,因此人们很容易找到它。

这里有一些代码可以重现我正在查看的内容:

# character vector with two strings from my html file
string.examples <-
c("ANES Time Series Cumulative Data File</b><br /><a href=\"../cdf/cdf.htm\"> Study Page</a>&nbsp; | &nbsp;<a href=\"../cdf/cdf_errata.htm\">Errata</a>&nbsp; | &nbsp;<a href=\"../data/cdf/anes_cdf.zip\" onClick=\"javascript: _gaq.push(['_trackPageview','/downloads/cdf-ascii']);\">Download ascii data files <img src=\"../../images/zip.jpg\" border=\"0\" width=\"23\" height=\"13\" /></a>&nbsp; | &nbsp;<a href=\"../data/cdf/anes_cdfpor.zip\" onClick=\"javascript: _gaq.push(['_trackPageview','/downloads/cdf-por']);\">Download .por file <img src=\"../../images/zip.jpg\" border=\"0\" width=\"23\" height=\"13\" /></a>&nbsp; | &nbsp;<a href=\"../data/cdf/anes_cdfdta.zip\" onClick=\"javascript: _gaq.push(['_trackPageview','/downloads/cdf-dta']);\">Download .dta file <img src=\"../../images/zip.jpg\" border=\"0\" width=\"23\" height=\"13\" /></a>&nbsp; | &nbsp;August 25, 2011 version </td></tr>",
"ANES 2012 Time Series Study</b><br /><a href=\"../anes_timeseries_2012/anes_timeseries_2012.htm\">Study Page</a>&nbsp; | &nbsp;<a href=\"../anes_timeseries_2012/anes_timeseries_2012_errata.htm\">Errata</a>&nbsp; | &nbsp;<a href=\"../data/anes_timeseries_2012/anes2012TS.zip\" onClick=\"javascript: _gaq.push(['_trackPageview','/downloads/2012TS-ascii']);\">Download ascii data files <img src=\"../../images/zip.jpg\" border=\"0\" width=\"23\" height=\"13\" /></a>&nbsp; | &nbsp;<a href=\"../data/anes_timeseries_2012/anes2012TS_sav.zip\" onClick=\"javascript: _gaq.push(['_trackPageview','/downloads/2012TS-sav']);\">Download .sav file</a> <a href=\"../data/anes_timeseries_2012/anes2012TS_sav.zip\"><img src=\"../../images/zip.jpg\" border=\"0\" width=\"23\" height=\"13\" /></a>&nbsp; | &nbsp;<a href=\"../data/anes_timeseries_2012/anes2012TS_dta.zip\" onClick=\"javascript: _gaq.push(['_trackPageview','/downloads/2012TS-dta']);\">Download .dta file <img src=\"../../images/zip.jpg\" border=\"0\" width=\"23\" height=\"13\" /></a>&nbsp; | &nbsp;July 1, 2013 version<br />"
)

在第一行深处,有文字 <a href=\"../data/cdf/anes_cdfdta.zip\"在第二行,有文字 <a href=\"../data/anes_timeseries_2012/anes2012TS_dta.zip\"

从这两行中,我想提取 ../data/cdf/anes_cdfdta.zip../data/anes_timeseries_2012/anes2012TS_dta.zip因为它们包含文本 dta.zip因为它们开始<a href=\"然后以 \" 结尾

我想要一些东西:

x <- some.regex.function( string.examples )

产生一个长度为 2 的字符向量,其中...

> x
[1] "../data/cdf/anes_cdfdta.zip" "../data/anes_timeseries_2012/anes2012TS_dta.zip"

最佳答案

这里我假设你正在寻找的模式在 a href=\" 之后开始并以 dta.zip 结束。所以我的想法是使用贪婪搜索遍历所有 a href 直到 dta.zip。此外,我们捕获每个部分并将搜索到的字符串替换为所需的捕获。

gsub("(.*a href=\\\")(.*dta\\.zip)(.*)$", "\\2", string.examples)

.*a href=\\\" 如前所述“贪婪”搜索模式(必须转义\和 ")。然后通过执行 .*data\\.zip,我们限制贪婪搜索不超过我们需要的点。这也是我们感兴趣的模式。因此,我们确保也捕获它。那么剩下的就很明显了。替换模式是第二次捕获。

关于regex - 如何提取既匹配某些模式又位于其他两个字符串之间的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17775013/

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