Замена регулярного выражения с условием ИЛИ - PullRequest
1 голос
/ 14 января 2020

У меня есть список строк (тысяч), разделенных пробелами и условиями ИЛИ, например:

Ani mal|Hu man|Pl ant|Fu ngus

И я хочу избавиться от пробелов, но эти Строки находятся внутри огромного текста (XML) с большим количеством преднамеренных пробелов. Поэтому я не могу просто удалить все пробелы. Я пытался:

(Ani) (mal)|(Hu) (man)|(Pl) (ant)|(Fu) (ngus) заменить на: $1$2

, очевидно, это не работает. Я знаю, что могу сделать это на любом языке программирования, но я хотел посмотреть, есть ли способ сделать это только с помощью Regex (например, в Notepad ++).

1 Ответ

1 голос
/ 14 января 2020

Если у вас есть фиксированное количество групп для альтернативы, и вы хотите ссылаться на захваченные значения (группы) в каждой альтернативе, используя сброс * индексов , вы можете использовать сброс ветви группа :

(?|(Ani) (mal)|(Hu) (man)|(Pl) (ant)|(Fu) (ngus))
^^^  1     2  ^ 1     2  ^  1    2  ^  1     2  ^    

Заменить на $1$2. Благодаря группе (?|...) все альтернативы внутри имеют группы с одинаковыми индексами.

См. Демонстрационную версию regex онлайн .

Настройки Notepad ++ и демонстрационная версия:

enter image description here

...