Регулярные выражения в Java заменяют нечетное количество слешей - PullRequest
0 голосов
/ 21 февраля 2012

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

Например:

  • Тест / 123 -> Тест // 123
  • Тест // 123 -> Тест // 123
  • Тест /// 123 -> Тест ////// 123

Ответы [ 2 ]

1 голос
/ 21 февраля 2012
  Pattern p = Pattern.compile("(?<!/)/(//)*(?!/)");
  Matcher m = p.matcher(inputString);
  String outputStr = m.replaceAll("$0$0");
  • (?<!/) гарантирует, что перед матчем не будет косых черт;
  • /(//)* соответствует нечетному числу косых черт;
  • (?!/) удостоверяетсяпосле совпадения косых черт нет.

Строка замены - $0$0, которая удваивает совпадающие косые черты.

Я проверял это на ваших входах, и этоработает точно в соответствии с вашей спецификацией.

0 голосов
/ 21 февраля 2012

Замените (?<!/)((//)*/)(?!/) на то, что вы хотите вместо.

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