RegexЗаменить n-е вхождение строки подчеркивания - PullRequest
1 голос
/ 10 апреля 2020

У меня проблемы с получением REGEXREPLACE работы в формуле Google Sheets. Я стремлюсь воспроизвести определенную карточную игру, противостоящую человечеству. У меня есть ячейка, содержащая строку, которая содержит один, два или три вхождения серии символов подчеркивания, например,

"_____ - это новое _____"

И, скажем, я хочу заменить в строки «Оранжевый» для первого вхождения и «Черный» для второго вхождения.

Я не знаю, сколько подчеркиваний будет в каждой строке, это может быть один или несколько, поэтому это выглядит как работа для регулярных выражений. Я попытался SUBSTITUTE, и он, похоже, не распознал звездочки. Исходя из этой ссылки , я пытался использовать {1} {2} и {3}, чтобы соответствовать первому / второму / третьему вхождению, но я что-то не так делаю:

 =REGEXREPLACE(G16,".*(_*){1}.*",G17)

G16: _____ is the new _____.

G17: Orange

Вывод формулы: OrangeOrange.

Может кто-нибудь помочь мне выяснить правильный способ сделать это?

1 Ответ

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

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

=REGEXREPLACE(REGEXREPLACE(G16,"^([^_]*)_+","$1Orange"), "^([^_]*)_+", "$1Black")
             |----- First occurrence -----------------|
 |----------------- Second occurrence ------------------------------------------|                     

enter image description here

Подробности

  • ^ - начало строки
  • ([^_]*) - Группа захвата 1 ($1 будет относиться к значению этой группы): 0 или более символов, кроме знака подчеркивания
  • _+ - 1 или более символов подчеркивания .
...