Удалить da sh из строки, но не из середины, когда она окружена (az) - PullRequest
0 голосов
/ 08 апреля 2020

Я читаю похожие вопросы, но они не являются точным ответом на мой вопрос.

Я хочу удалить любой da sh из моей строки, но не этот da sh в середине строки, которая окружена ( Я) или (А-Я), как мой пример теста.

я уже использую этот код регулярного выражения, но он очищает все данные sh:

string.replaceAll("\\-", "");

Контрольный пример

  • - хорошо
  • -хорошо
  • г-уд *
  • г-уод
  • хорошо-
  • хорошо -

Результат

  • хорошо
  • хорошо
  • g-ood *
  • хорошо
  • хорошо
  • хорошо

1 Ответ

2 голосов
/ 08 апреля 2020

Использование регулярных выражений является правильным решением. Тем не менее, ваше регулярное выражение захватывает каждые дефисы. Вам нужно проверить наличие букв до и после.

((?<!\w)-|-(?!\w))

Это регулярное выражение будет искать дефисы, у которых ничего не было до ИЛИ , и не будет ничего за ними.

Regular expression visualization

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

string.replaceAll("((?<!\\w)-|-(?!\\w))", "");

вот регулярное выражение для вас, чтобы проверить больше случаи

...