Как определить регулярное выражение для удаления спам-ссылок с текстовой маской («spam1 dot com») из строки Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как определить регулярное выражение для удаления спам-ссылок с текстовой маской («spam1 dot com») из строки Java?

Сообщение Anonymous »

У меня есть список сайтов, на которых представлены спам-ссылки:

Код: Выделить всё

List bannedSites = ["spam1.com", "spam2.com", "spam3.com"];
Есть ли регулярный способ удаления ссылок, соответствующих этим запрещенным сайтам, из следующего текста?

Код: Выделить всё

Dear Arezzo,
Please check out my website at spam1.com or http://www.spam1.com
or http://spam1.com or spam1 dot com to win millions of dollars in prizes.
Thank you.
Big Spammer
Обратите внимание, что ссылка может иметь несколько форматов URL-адресов, которые решение aioobe хорошо распознает:

Код: Выделить всё

String input = "Dear Arezzo,\n"
+ "Please check out my website at spam1.com or http://www.spam1.com"
+ "or http://spam1.com or spam1 dot com to win millions of dollars in prizes."
+ "Thank you.";

List bannedSites = Arrays.asList("spam1.com", "spam2.com", "spam3.com");

StringBuilder re = new StringBuilder();
for (String bannedSite : bannedSites) {
if (re.length() > 0)
re.append("|");
re.append(String.format("http://(www\\.)?%s\\S*|%1$s",
Pattern.quote(bannedSite)));
}

System.out.println(input.replaceAll(re.toString(), "LINK REMOVED"));
Но хотя приведенный выше код отлично работает для форматов URL-адресов spam1.com или http://www.spam1.com или http://spam1.com, он пропускает несколько текстовых форматов:
Как я могу изменить регулярное выражение для целевых текстовых форматов, таких как эти?

Код: Выделить всё

spam1 dot com
spam1[.com]
spam1 .com
spam1 . com
Идея состоит в том, чтобы получить такой результат:

Код: Выделить всё

Dear Arezzo,
Please check out my website at [LINK REMOVED] or [LINK REMOVED]
or [LINK REMOVED] or [LINK REMOVED] to win millions of dollars in prizes.
Thank you.
Big Spammer
Как я заметил в комментариях ниже, мне, вероятно, не нужно запрещать всю строку spam1 dot com. Если я смогу стереть только часть spam1, чтобы она стала такой: [ССЫЛКА УДАЛЕНА] точка com - это сработает.


Подробнее здесь: https://stackoverflow.com/questions/771 ... t-com-from
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»