首页 > 解决方案 > 字符串之间的正则表达式(多个结果?)

问题描述

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

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

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

标签: regexsed

解决方案


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

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

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

双引号并不特殊。


推荐阅读