Как заменить все знаки препинания, кроме двойных кавычек, используя RegExp - PullRequest
2 голосов
/ 27 марта 2012

Я пытаюсь очистить строку.

Я хочу удалить все знаки препинания из строки , кроме двойных кавычек.

Ниже функция trimPunctuation () прекрасно работает для удаления всех знаков препинания из строки.

Кто-нибудь знает способ убрать все знаки пунктуации, кроме двойных кавычек?

 private String trimPunctuation( String string, boolean onlyOnce )
    {
        if ( onlyOnce )
        {
            string = string.replaceAll( "\\p{Punct}$", "" );
            string = string.replaceAll( "^\\p{Punct}", "" );
        }
        else
        {
            string = string.replaceAll( "\\p{Punct}+$", "" );
            string = string.replaceAll( "^\\p{Punct}+", "" );
        }
        return string.trim();
    }

Более подробную информацию о классе Unicode для пунктуации можно найти здесь . Но это мне не помогло.

1 Ответ

10 голосов
/ 27 марта 2012

Вы можете использовать отрицательный прогноз .

(?!")\\p{punct}

Rubular demo

Пример Java :

String string = ".\"'";
System.out.println(string.replaceAll("(?!\")\\p{Punct}", ""));

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