【问题标题】:Regular Expression between strings (multiple results?)字符串之间的正则表达式(多个结果?)
【发布时间】:2020-03-05 21:19:53
【问题描述】:

我正在使用正则表达式过滤来自 HTML 页面的链接,如下所示:

(?<=data-ng-non-bindable data-src=\")(.*?)(?=\" data-caption)

如何更改它以获得多个结果,而不仅仅是第一个?

【问题讨论】:

  • 不同的库和语言的工作方式不同。您需要说明您使用的是哪个。
  • 嘿,对不起,我不太确定我想如何做到这一点:我下载了一个网站 html (wget http://...) 然后我想使用 sed 来删除所有内容,除了上面这个正则表达式的所有内容。我使用的系统是debian。这有帮助吗?如您所知,我的知识非常基础...:/
  • 我也意识到,我计划使用 sed 将下载的文件中的所有内容删除,但这些链接不起作用......这就是我尝试的方式:sed -i '/(?
  • 对我自己的回答:sed 不能做积极的前瞻。 Indead 我用 perl: grep -oP '(?

标签: regex sed


【解决方案1】:

使用sed,您替换字符串,而不是提取。您可以设置一些选项以仅实际输出替换的子字符串,同一行上的匹配总是存在大问题。

因此,最简单的方法是使用 grep-oP 选项:

grep -oP '(?<=data-ng-non-bindable data-src=").*?(?=" data-caption)' file > outfile

双引号并不特殊。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多