Регулярное выражение, которое избавляет от всех знаков препинания в начале и конце строки

Я пытаюсь придумать регулярное выражение, которое избавляет от всех знаков препинания (если есть один или несколько) как в верхней части, так и в конце строки. Регулярное выражение, которое я использую, теперь выглядит следующим образом:(слово - это строка, которую я хочу преобразовать)

    word = word.replaceAll("['?:!.,;]*([a-z]+)['?:!.,;]*", "$1").toLowerCase();

Тем не менее, я все еще получаю некоторые странные случаи. Например, 'Amen' идет к 'amen' а также ''tis идет к 'tis, Может ли кто-нибудь помочь мне изменить его так, чтобы 'Amen' будет идти к amen а также ''tis в tis, Заранее спасибо!

3 ответа

Решение

Замените следующую схему:

^\p{P}+|\p{P}+$

С пустой строкой.

демонстрация

\p{P} означает любой знак пунктуации. Первая часть регулярного выражения удалит пунктуацию в начале, а вторая сделает это в конце.

В Java вы можете использовать:

\\p{Punct}

определить знак пунктуации.

Чтобы удалить знак пунктуации из начала или конца, используйте это:

String word = word.replaceAll("^\\p{Punct}+|\\p{Punct}+$", "");

Я не мог воспроизвести проблему с ''tis становление 'tis, но проблема с 'Amen' является то, что ваше регулярное выражение не принимает заглавные буквы, потому что [a-z] может принимать только строчные буквы Вы можете изменить его, добавив A-Z к вашему классу персонажей или делая регистр нечувствительным к (?i) флаг.

Так что попробуйте

replaceAll("['?:!.,;]*([a-zA-Z]+)['?:!.,;]*", "$1")

или же

replaceAll("(?i)['?:!.,;]*([a-z]+)['?:!.,;]*", "$1")

Вы также можете изменить свою стратегию, просто удалив знаки препинания в начале или в конце строки. В этом случае вы можете просто использовать

replaceAll("^\\p{Punct}+|\\p{Punct}+$","");

где

  • ^ представляет начало строки
  • $ представляет конец строки
  • \\p{Punct} класс символов, представляющий знаки пунктуации (один из !"#$%&'()*+,-./:;<=>?@[]^_`{|}~ персонажи), но вы можете использовать свой собственный ['?:!.,;] класс, если хотите
Другие вопросы по тегам