Regex, чтобы удалить черные слова из предложения - PullRequest
3 голосов
/ 26 августа 2011

Как я могу использовать регулярное выражение, чтобы отфильтровать список слов в черном списке (Непристойных), такой если черный список слов похож на «Билл Джозеф»

 Then 'I am Bill Josephine' is valid
    but 'I am Bill Joseph.' is invalid
        'I am Bill Joseph,' is invalid
        'I am Bill Joseph ' invalid
        'I am Bill Joseph<any non alphanumeric>' is invalid.

    Similarly 'I am .Bill Joseph' is invalid
              'I am <any non alphanumeric>Bill Joseph' is invalid.

Ответы [ 3 ]

1 голос
/ 26 августа 2011

Просто, и это работает:

String badStrRegex = "\\WBill Joseph\\W?";
Pattern pattern = Pattern.compile(badStrRegex);
Matcher m = pattern.matcher(testStr);  //testStr is your string under test
boolean isBad = m.find();

Это работает !!Проверено на все ваши данные.

1 голос
/ 26 августа 2011

Используйте отрицание класса буквенно-цифровых символов:

"[^ A-Za-z0-9] Билл Джозеф [^ A-Za-z0-9]"

Использование "\ W "вместо" [^ A-Za-z0-9] "будет работать в большинстве случаев, за исключением случаев, когда перед / после имени стоит подчеркивание.Так что «Билл Джозеф_» все равно будет считаться действительным.

0 голосов
/ 26 августа 2011

Убедитесь, что слово окружено границей слова ".*\\b" + badWord + "\\b.*"

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