Помогите с регулярными выражениями - PullRequest
0 голосов
/ 06 марта 2011

У меня есть небольшой фрагмент кода, который принимает входную строку, выполняет часть очистки (удаляет специальные символы, такие как '' \ и заменяет любые другие символы пробелом), а затем генерирует новую строку.

public class Example
{
    public static void main(String... args)
    {
        charFilter("I.T rocks. It's time to get a job.Come on");

    }

    public static String charFilter(String inText) { 

        String outText="";

        inText = inText.replaceAll("['’\\.]", "");
        outText = inText.replaceAll("[^a-zA-Z0-9- ]", " ");
        System.out.println(outText);
        return outText;
    }

}

Вывод вышеприведенного кода выглядит так: «IT-время пришло пора найти работу». Но мне нужно получить вывод, что «ИТ тянет время найти работу Давай» (работа и приход должны отображаться как отдельные слова, а ИТ должны отображаться как ИТ), потому что мы можем ожидать, что пользователь, вводящий данные, забудет добавить пробел после полной остановки.

Может ли кто-нибудь подсказать мне, какой подход мне нужен?

Ответы [ 2 ]

1 голос
/ 06 марта 2011

Вам нужно будет использовать информацию о семантике, поэтому А.И. сложнее, чем регулярное выражение. Без дополнительной информации простое регулярное выражение не сможет отличить то, что люди считают сокращением или концом / началом предложения.

Одним из возможных предложений, но не 100% -ным решением, было бы искать одиночные символы, за которыми следуют или разделяются точкой. Хотя я могу представить, что есть предложения, заканчивающиеся одним символом, а следующий, начинающийся с одного, это может быть правильным решением для многих случаев. Возможно, вы можете придумать подобный обходной путь для других специальных символов, используя некоторые знания языка ввода или предметной области (если есть).

Полное общее решение состоит в том, чтобы человек перечитал и исправил ошибки вручную. Регулярное выражение или другая автоматическая замена не будут приближаться к 100% для всего возможного ввода текста.

1 голос
/ 06 марта 2011

Вы подставляете . в первом регулярном выражении, поэтому оно не будет заменено пробелом во втором регулярном выражении.

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