使用正则表达式删除不同的 URL

发布于 2024-11-04 09:41:29 字数 447 浏览 5 评论 0原文

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

所有 URL 均不同,且前面带有 \n________\n。 (即8个下划线) 下面是其中一个 URL 的示例:

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

所以基本上我尝试使用 \n... 和 [/URL] 作为边界来选择该 URL 以及其间的所有内容。我想到的是:

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

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

I am looking to remove a ton of bad spam URL links from my forums using regex in either grep or vim and subsequently using find/replace commands. I am looking for a way to select just the bad URLs to do that.

All of the URLs are different and are preceeded by \n________\n. (Thats 8 underscores)
Here is an example of one of the URLs:

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

So basically I was trying to use the \n... and the [/URL] as boundaries to select that and everything inbetween. What I came up with is this:

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

Using that does not correctly close the search and selects pretty much everything. I very am new at this and appreciate any insight. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

濫情▎り 2024-11-11 09:41:29

假设 GNU ERE,这应该有效:

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

RegexBuddy 似乎同意我的观点:

< img src="https://i.sstatic.net/f5kjp.png" alt="regexbuddy snapshot">

也就是说,

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

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

Assuming GNU ERE, this should work:

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

RegexBuddy seems to agree with me:

regexbuddy screenshot

That said,

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

doesn't work on my system (Cygwin with GNU grep 2.6.3; test.txt's contents are shown in the screenshot above).

北座城市 2024-11-11 09:41:29

如果你想给 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]

If you want to give sed a chance following will do the job:

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

PS: You can do same :s/^.*\(\[URL.*\)$/\1/ in your vi session as well.

OUTPUT

For the file.txt that contains:

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

It produces:

[URL=http://boxvaporizers.com]Box Vaporizers[/URL]
溺ぐ爱和你が 2024-11-11 09:41:29

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

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

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

In Vim this should remove all lines that match the pattern:

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

That pattern matches the sample text taken literally, all in one line.

七禾 2024-11-11 09:41:29

实际上,我可以使用以下命令在 Microsoft Word 中执行此操作:

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

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

I was actually able to do this in Microsoft Word using the following:

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

Thank you for all the input, couldn't have done it without the help!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文