Удаление разных URL с помощью Regex - PullRequest
1 голос
/ 02 мая 2011

Я пытаюсь удалить тонну плохих спам-ссылок со своих форумов, используя регулярные выражения в grep или vim, а затем с помощью команд поиска / замены.Я ищу способ выбрать только плохие URL-адреса, чтобы сделать это.

Все URL-адреса разные и перед ними стоит \n________\n.(Это подчеркивает 8) Вот пример одного из URL:

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

Так что в основном я пытался использовать \ n ... и [/ URL] в качестве границ, чтобы выбрать это и всемежду.Я придумал вот что:

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

Использование, которое не правильно закрывает поиск и выбирает практически все.Я очень новичок в этом и ценю любое понимание.Благодаря.

Ответы [ 4 ]

1 голос
/ 02 мая 2011

Предполагая, GNU ERE , это должно работать:

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

RegexBuddy, похоже, согласен со мной:

regexbuddy screenshot

Тем не менее,

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

не работает в моей системе (Cygwin с GNU grep 2.6.3; содержимое test.txt показано на скриншоте выше).

0 голосов
/ 04 мая 2011

Я действительно смог сделать это в Microsoft Word, используя следующее:

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

Спасибо за ваш вклад, не смог бы сделать это без помощи!

0 голосов
/ 02 мая 2011

В Vim это должно удалить все строки, которые соответствуют шаблону:

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

Этот шаблон соответствует тексту образца, взятому буквально, все в одной строке.

0 голосов
/ 02 мая 2011

Если вы хотите дать sed возможность выполнить следующее:

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

PS: вы можете сделать то же самое :s/^.*\(\[URL.*\)$/\1/ и в сеансе vi.

OUTPUT

Для файла file.txt, содержащего:

\ n_ _ \ n [URL = http://boxvaporizers.com]Box Испарители [/ URL]

производит:

[URL=http://boxvaporizers.com]Box Vaporizers[/URL]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...