Используйте Regex в Java, чтобы разделить два домена, которые хранятся в переменной - PullRequest
0 голосов
/ 20 февраля 2020

В настоящее время я работаю над системой для игры, чтобы не допустить публичности с других серверов.

Я придумала некий RegEx, который позволил мне заблокировать много рекламы, но эти ** ** Продолжайте адаптироваться, конечно. Они используют домены своих серверов, которые состоят из таких вещей, как "builder.de", "myserver.com", рекламных материалов, в сочетании с некоторыми обещаниями.

Чтобы отслеживать их, я думаю, что единственный способ это получить достойный фильтр для доменов, поскольку они могут бесконечно менять свои обещания, но покупка дорогих доменов, по крайней мере, сильно их раздражает. Мы настолько быстро блокировали домены, что они, похоже, скорее находят способы прокрасться через наш фильтр.

Теперь они придумали новую вещь, публикуя домены наподобие этого: "builder. * D * e ». Моя предварительная обработка сообщения превращает его в "строитель де". Мои заблокированные домены и топые домены хранятся в двух списках строк, и я перебираю их:

public static boolean checkForAdverts(String check) {
    check = preprocessString(check);

    for (String domain : DataManager.domains) {
        for (String topleveldomain : DataManager.topleveldomains) {
            if (DataManager.isPairInWhitelist(domain, topleveldomain)) continue;
            if (CENSORED) { //Sorry, in case smb of these people find this post...
                return true;
            }
        }
    }
    return false;
}

У меня есть эта переменная tldomain, которая содержит "de", но я хочу разрешить еще один символ в этом. Если бы я имел дело с простой строкой, я бы просто сделал "d(.)?e", но это невозможно, поскольку я никогда не знаю, что находится внутри моего tldomain. Кроме того, эти домены верхнего уровня также могут состоять из трех букв, например "com". Я хочу получить совпадение, если где-то в моем домене верхнего уровня "спрятан" 1 или 2 символа.

Итак, я хочу:

Совпадения: "de" "dee" "dxe" "de" или "coom" "com" "cxom" "cdom" "c om" "co m" "c om"

Я понятия не имею, как это сделать, если мой уровень выше домен хранится в переменной, как я могу это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...