HPCC ECL REGEX обратные значения

Я использую библиотеку REGEX, как определено здесь http://userguide.icu-project.org/strings/regexp

При этом у меня есть конкретная проблема, которую я хотел бы использовать для исправления регулярных выражений.

Input := '!Tim !~ Dan~'; 
Output := Tim !~ Dan

REGEXREPLACE('((?<![!])~)' ,Input,' '); //Results in : !Tim !~ Dan
REGEXREPLACE('((?![~])!)|((?<![!])~)',Input,' '); //Results in : Tim ~ Dan

Насчёт этого высказывания! после ~ должен быть удален?

Как мне удалить все! и ~ не удаляя комбинацию!~ в одной команде Regex.

Бонусные баллы, если вы можете сказать мне, как заработать!~! работать в одной команде.

Спасибо!!

1 ответ

Решение

Вы можете использовать следующее регулярное выражение:

(!~)|[!~]

и заменить на $1 обратная ссылка. Смотрите демо-версию регулярного выражения.

Детали:

  • (!~) - соответствует и фиксирует в группе 1 а !~ последовательность символов
  • | - или же
  • [!~] - один ! или же ~ персонаж

$1 обратная ссылка повторно вставляет значение, сохраненное в группе 1, обратно в результирующую строку.

Другие вопросы по тегам