#google-sheets #google-sheets-formula
Вопрос:
В очень длинной строке я хотел бы удалить все, что начинается с SPAIN:
, пока мы не получим по крайней мере 4 заглавные буквы подряд, заканчивающиеся на :
(т. Е. INDIA:
или SOUTH AFRICA:
или NORTHERN-IRELAND:
).
Моя попытка, где A2 — очень длинная строка:
=REGEXREPLACE(A2,"SPAIN: .*([A-ZÀ-ÿ-' ]{4,}): ","$1: ")
К сожалению, вышесказанное не работает, так как стирается все, вплоть до самых последних 4 заглавных букв в строке.
Есть какие-нибудь идеи?
Пример листа, с которым можно поиграть здесь: https://docs.google.com/spreadsheets/d/1_DbCmGhqaDvFtdi20PnuA35i-Sv_3nMS9Kl_e7CVu3k/edit?usp=sharing
Ответ №1:
Попробуй:
=REGEXREPLACE(A1,"SPAIN:([^:] )([^A-Z:])","$2: ")
Для образца листа будет работать следующая формула:
=ArrayFormula(REGEXREPLACE(A2:A,"ESPAGNE:(.*?)-:-([A-Z]|$)","$2"))
Комментарии:
1. Привет, Basic, спасибо за ваш ответ. У меня также есть специальные символы между странами (такие как
: - ' / . ( )
). Есть какие-нибудь идеи?2. @Exdefoot добавлена формула для образца листа,
3. вторая формула-это в значительной степени то, что я искал, спасибо. Только одна последняя проблема заключается в том, что если в моей строке есть два (или более)
ESPAGNE:
, она удаляет только первый. Есть ли способ за одинREGEXREPLACE
раз удалить их все?4. @Exdefoot это странно. Как я тестирую, формула удаляет все вхождения найденных строк. У вас есть тестовый случай?
5. @Exdefoot есть два последовательных
ESPAGNE
— для этого используйте=ArrayFormula(REGEXREPLACE(A2:A,"(ESPAGNE:(.*?)-:-) ([A-Z]|$)","$3"))
Ответ №2:
Я добавил новый лист («Справка Эрика») в вашу электронную таблицу с образцом. Следующая формула приведена в B2 этого листа:
=ArrayFormula(IF(A2:A="",,REGEXREPLACE(REGEXREPLACE(A2:A,IF(LEFT(A2:A,4)="ESPA","^. ("amp;REGEXEXTRACT(A2:A,"-:-([A-ZÀ-Ý]{4}[^:] )")amp;")","ESPAGNE[^~] -:-([A-ZÀ-Ý]{4}[^:] )"),"$1"),"ESPA. $","")))
Это приведет к получению правильного результата для всех случаев в вашем образце.
Комментарии:
1. Спасибо за ваше предложение, но я ищу что-то, что можно сделать только в одном месте РЕГУЛЯРНОГО выражения, очень похожее на решение @basic