使用正则表达式删除不同的 URL
我希望使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
假设 GNU ERE,这应该有效:
RegexBuddy 似乎同意我的观点:
< img src="https://i.sstatic.net/f5kjp.png" alt="regexbuddy snapshot">
也就是说,
在我的系统上不起作用(Cygwin with GNU grep 2.6.3;
test.txt
的内容如上面的屏幕截图所示)。Assuming GNU ERE, this should work:
RegexBuddy seems to agree with me:
That said,
doesn't work on my system (Cygwin with GNU grep 2.6.3;
test.txt
's contents are shown in the screenshot above).如果你想给 sed 一个机会,以下将完成这项工作:
PS:你可以在你的 vi 中执行相同的
:s/^.*\(\[URL.*\)$/\1/
会议也是如此。输出
对于包含以下内容的 file.txt:
\n__\n[URL=http://boxvaporizers.com]Box Vaporizers[/URL]
它会生成:
If you want to give sed a chance following will do the job:
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:
在 Vim 中,这应该删除与该模式匹配的所有行:
该模式与字面上的示例文本匹配,全部在一行中。
In Vim this should remove all lines that match the pattern:
That pattern matches the sample text taken literally, all in one line.
实际上,我可以使用以下命令在 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!