听起来您正试图在 Mac 的某个编辑器中执行此操作,但问题标记为“perl”,因此这是您可以在 Perl 中执行此操作的一种方法。
首先,有一个完整的示例输入和输出有助于确保我们理解所需的行为,所以这里有一个示例输入 test.doc:
<p>https://drive.google.com/file/d/0B3GNg0pNzNCWWdFSXNzd00/view?usp=sharing</p><br /><p>https://drive.google.com/sharing/oSmNg0pNzRjWEFyNDRzam8/view?usp=sharing<br /></p></div>
<p>http://drive.google.com/file/d/0B3GNg0pNzNCWWdFSXNzd00/view?usp=sharing</p><br/><p>https://drive.google.com/file/sharing/view?usp=sharing<br /></p></div>
https://drive.abc.com/file/d/efg/view?usp=sharing
https://drive.apple.com/file/d/abc/efg/view?usp=sharing
https://drive.google.com/file/d/xyz/skipme?usp=sharing https://drive.google.com/file/d/ef/view?usp=sharing
我将假设链接包含在空格或 *ml 标记 <> 中。这是一个 Linux one-liner,它将接受输入 test.doc 并输出匹配的 html 链接。该[^\s<>]+
部分将捕获一个或多个不是空格的字符\s
或<>
(即由于 的否定字符类[^
),以防止它提前运行并匹配同一行上的多个链接:
perl -ne '@m = $_ =~ m{(https?://drive\.google\.com/[^\s<>]+view\?usp=sharing)}g; print "$_\n" for @m;' test.doc
这将给出以下输出:
https://drive.google.com/file/d/0B3GNg0pNzNCWWdFSXNzd00/view?usp=sharing
https://drive.google.com/sharing/oSmNg0pNzRjWEFyNDRzam8/view?usp=sharing
http://drive.google.com/file/d/0B3GNg0pNzNCWWdFSXNzd00/view?usp=sharing
https://drive.google.com/file/sharing/view?usp=sharing
https://drive.google.com/file/d/ef/view?usp=sharing
如果以上内容不能完全满足您的需求,请提供不同的输入/输出文本片段,有人可以插话您如何更改单行以匹配它。