使用Regex删除不同的URL

时间:2011-05-02 16:37:11

标签: regex vim grep spam

我希望使用grep或vim中的regex从我的论坛中删除大量的垃圾邮件URL链接,然后使用find / replace命令。我正在寻找一种方法来选择那些不好的URL。

所有网址都不同,前面是\n________\n。 (这是8个下划线) 以下是其中一个网址的示例:

\n________\n[URL=http://boxvaporizers.com]Box Vaporizers[/URL]

所以基本上我试图使用\ n ...和[/ URL]作为边界来选择中间的一切。我想出的是:

[\\]n[_][_][_][_][_][_][_][_][\\]n.*\[\/URL\]]

使用它不能正确关闭搜索并选择几乎所有内容。我非常陌生,并欣赏任何见解。感谢。

4 个答案:

答案 0 :(得分:1)

假设GNU ERE,这应该有效:

\\n_{8}\\n\s\[URL=(.*)].*\[/URL]

RegexBuddy似乎同意我的观点:

regexbuddy screenshot

那就是说,

> grep -E \\n_{8}\\n\s\[URL=(.*)].*\[/URL] test.txt

在我的系统上不起作用(带有GNU grep 2.6.3的Cygwin; test.txt的内容显示在上面的屏幕截图中。

答案 1 :(得分:0)

如果你想让sed有机会完成这项工作:

sed 's/^.*\(\[URL.*\)$/\1/' file.txt

PS:您也可以在vi会话中执行相同的:s/^.*\(\[URL.*\)$/\1/

输出

对于包含以下内容的file.txt:

\ n _ _ \ n [URL = http://boxvaporizers.com] Box Vaporizers [/ URL]

它产生:

[URL=http://boxvaporizers.com]Box Vaporizers[/URL]

答案 2 :(得分:0)

在Vim中,这应删除与模式匹配的所有行:

:g/\\n\%(\\_\)\{8}\\n \[URL=.\{-}\/URL\]/d

该模式与字面上的示例文本匹配,全部在一行中。

答案 3 :(得分:0)

我实际上可以使用以下方法在Microsoft Word中执行此操作:

[\\]n_{8}[\\]n?*/URL\]

感谢您的所有输入,没有帮助就无法完成!