gpt4 book ai didi

regex - 在终端上用正则表达式分组提取字符串

转载 作者:太空狗 更新时间:2023-10-29 11:43:35 29 4
gpt4 key购买 nike

我有一个包含如下 HTML 信息的文本文件:

<li><a href="https://www.youtube.com/watch?v=YDubYJsZ9iM&amp;list=PL5-da3qGB5IBC-MneTc9oBZz0C6kNJ-f2">Lab: K-means Clustering</a> (6:31)</li>
<li><a href="https://www.youtube.com/watch?v=4u3zvtfqb7w&amp;list=PL5-da3qGB5IBC-MneTc9oBZz0C6kNJ-f2">Lab: Hierarchical Clustering</a> (6:33)</li>
<li><a href="https://www.youtube.com/watch?v=jk9S3RTAl38&amp;list=PL5-da3qGB5IC8_kWZXDcmLx7_n4RTBkAS">Interview with John Chambers</a> (10:20)</li>
<li><a href="https://www.youtube.com/watch?v=6l9V1sINzhE&amp;list=PL5-da3qGB5IC8_kWZXDcmLx7_n4RTBkAS">Interview with Bradley Efron</a> (12:08)</li>
<li><a href="https://www.youtube.com/watch?v=79tR7BvYE6w&amp;list=PL5-da3qGB5IC8_kWZXDcmLx7_n4RTBkAS">Interview with Jerome Friedman</a> (10:29)</li>
<li><a href="https://www.youtube.com/watch?v=MEMGOlJxxz0&amp;list=PL5-da3qGB5IC8_kWZXDcmLx7_n4RTBkAS">Interviews with statistics graduate students</a> (7:44)</li>

我用 grep -oP "https:\/\/www.youtube.com\/watch\?v=([A-Za-z0-9-_]+)" list > links 提取链接这样 list是html文件。从另一方面我需要提取每个文件的名称,即我需要另一个这样的列表:

Lab: K-means Clustering
Lab: Hierarchical Clustering
Interview with John Chambers
Interview with Bradley Efron
Interview with Jerome Friedman
Interviews with statistics graduate students

问题是我有一些标签,比如 <a href="http://www-bcf.usc.edu/~gareth/ISL/">An Introduction to Statistical Learning with Applications in R</a> ,因此我不能将某些模式与 a 一起使用标签。所以我必须使用模式分组之类的东西,我将能够使用一些 $1对于第一个匹配的模式,$2对于第二种模式,依此类推 https:\/\/www.youtube.com\/watch\?v=([A-Za-z0-9-_]+)/[SOME INFORMATION ON URL HERE]/([A-Za-z0-9-_]+) . 我如何在终端 (Bash) 上执行此操作?

最佳答案

您可以执行以下操作:

grep -oP "(?<=\">).*(?=</a)" your_file

这将打印:

Lab: K-means Clustering
Lab: Hierarchical Clustering
Interview with John Chambers
Interview with Bradley Efron
Interview with Jerome Friedman
Interviews with statistics graduate students

由于没有简单的方法可以使用 grep 只打印捕获的组,我使用先行断言和后行断言来确保只打印指定的部分。

关于regex - 在终端上用正则表达式分组提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30703847/

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