【问题标题】:Removing Different URLs with Regex使用正则表达式删除不同的 URL
【发布时间】:2011-05-02 16:37:11
【问题描述】:

我希望使用 grep 或 vim 中的正则表达式从我的论坛中删除大量不良垃圾邮件 URL 链接,然后使用查找/替换命令。我正在寻找一种仅选择错误 URL 的方法。

所有的 URL 都是不同的,并以 \n________\n 开头。 (就是8个下划线) 以下是其中一个 URL 的示例:

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

所以基本上我试图使用 \n... 和 [/URL] 作为边界来选择它以及介于两者之间的所有内容。我想出的是这样的:

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

使用它不会正确关闭搜索并选择几乎所有内容。我对此很陌生,并感谢任何见解。谢谢。

【问题讨论】:

  • \n\_\_\_\_\_\_\_\_\n 中,那些字面上是字符\n,还是那些换行符?
  • 抱歉,发布正确的文本很困难。它是\n________\n。如果它没有显示它的斜杠 n(8 个下划线)斜杠 n,然后是 URL。 URL 的所有内容都是正确的。
  • 对内联代码使用反引号或使用 4 个空格缩进代码块。 stackoverflow.com/editing-help。反引号在 cmets 中有效,块无效。
  • 好的,帖子已清理,对此感到抱歉,感谢您的帮助。这是来自实际大量文本的示例。 Be well and good luck :D\n________\n[URL=ferrari-wiki.com/wiki/Ferrari_312PB]Ferrari 312Pb Specifications[/URL]'),(5201,'1facba48f9','Proria\'s我建议不要访问链接

标签: regex vim grep spam


【解决方案1】:

假设GNU ERE,这应该可行:

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

RegexBuddy 似乎同意我的观点:

也就是说,

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

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

【讨论】:

    【解决方案2】:

    如果你想给 sed 一个机会,下面会做这个工作:

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

    PS:你也可以在你的 vi 会话中做同样的:s/^.*\(\[URL.*\)$/\1/

    输出

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

    \n__\n[URL=http://boxvaporizers.com]盒式汽化器[/URL]

    它产生:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        我实际上可以使用以下方法在 Microsoft Word 中做到这一点:

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

        感谢您的所有投入,没有帮助就无法做到!

        【讨论】:

          猜你喜欢
          • 2016-07-23
          • 2019-02-16
          • 2013-01-08
          • 2020-07-12
          • 2017-11-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多