Проверка ячеек в LibreOffice Calc на соответствие регулярному выражению. Функция SEARCH

В одном из столбцов таблицы у меня содержались e-mail адреса. Но, к сожалению, некоторые из них были не правильными: где-то была набрана запятая вместо точки, где-то были пробелы, где-то вообще не было символа «@».

Как быстро найти ячейки, в которых значение не соответствует некоторому регулярному выражению? Поможет в этом функция =SEARCH

Синтаксис функции SEARCH

SEARCH(findtext; texttosearch; startposition),

где:

  • findtext — текст для поиска. Может быть числом или любой последовательностью символов. Можно использовать и регулярные выражения. Они должны быть для этого включены в Tools — Options — OpenOffice.org Calc — Calculate
  • texttosearch — текст, в котором будет выполняться поиск.
  • startposition — (необязательный параметр): позиция в тексте, с которой начинается поиск.

Функция возвращает позицию первого вхождения findtext в texttosearch

Примеры

=SEARCH("mail.ru";"123@mail.ru")  вернёт 5

=SEARCH("aZ";"az")  вернёт 1, поскольку поиск регистр при поиске не учитывается

=SEARCH("123"; "123123"; 2)  вернёт 4, поскольку благодаря последнему параметру поиск начался со второго символа.

=SEARCH("123";"125")  вернёт ошибку #ЗНАЧЕН! или #VALUE!, поскольку поиск закончился неудачей.

Если нам хочется, чтобы при неудачном поиске возвращался 0,  а при удачном 1 — мы можем воспользоваться функцией ISNUMBER, которая возвращает TRUE, если значение является числом. А если нет - вернёт FALSE.

Поэтому =ISNUMBER(SEARCH("слон";"домик"))  вернёт FALSE (ЛОЖЬ), а IF(ISNUMBER(SEARCH("слон";"домик"));1;0) вернёт 0.

=SEARCH("дом.к";"домик") вернёт 1. Здесь мы использовали простейшее регулярное выражение. Символ точка означает — один любой символ, кроме разрыва строки или конца абзаца. Подробнее о регулярных выражения в LibreOffiсe можно почитать на сайте libreoffice.org

Описание функции SEARCH в документации OpenOffice

Решение нашей задачи:

проверяем верно ли введены e-mail с помощью функции SEARCH и регулярных выражений

Итак, у нас в столбце A содержатся emailы. Воспользуемся, например таким простым регулярным выражением:

^[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-_.]+$

Чтобы проверить ячейку A1 — мы вставляем в ячейку B1 формулу

После этого, нам нужно чтобы в ячейке B2 появилась аналогичная формула для ячейки A2, в ячейке B3 — для A3, и.т.д. Для этого наводим на правый нижний край ячейки B1, и, удерживая нажатой клавишу мышки, двигаем вниз до самой последней нужной нам ячейки

После этого  можно отсортировать так, чтобы строки с неправильными email`ами  (у которых в столбце B0) оказались сверху. Для этого сначала нужно скопировать значения из столбца B в столбец С через Вставить как…  числа. и отсортировать по столбцу С с помощью Данные > Сортировка…