Нередко нужно проверить верность входных данных, пройтись по документу в поисках определенной информации или даже очистить строку от нежелательных символов экранирования. Обычно для этого используются регулярные выражения.
В стандартной библиотеке Go есть пакет regexp
, что нужен для операций с регулярными выражениями.
Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎
Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.
Как найти текст в строке с помощью регулярного выражения в Go?
1. Создайте файл regexp.go
со следующим содержимым:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
package main import ( "fmt" "regexp" ) const refString = `[{ \"email\": \"email@example.com\" \"phone\": 555467890}, { \"email\": \"other@domain.com\" \"phone\": 555467890}]` func main() { // Данный шаблон упрощен для краткости emailRegexp := regexp.MustCompile("[a-zA-Z0-9]{1,}@[a-zA-Z0-9]{1,}\\.[a-z]{1,}") first := emailRegexp.FindString(refString) fmt.Println("First: ") fmt.Println(first) all := emailRegexp.FindAllString(refString, -1) fmt.Println("All: ") for _, val := range all { fmt.Println(val) } } |
2. Запустите код через go run regexp.go
;
3. Посмотрите на вывод в терминале:
Пакет Regexp — Функции FindString() и FindAllString()
Функции FindString
и FindAllString
являются самым простым способом поиска совпадающего паттерна в указанной строке. Единственное разница в том, что метод FindString
из Regexp
вернут только первое найденное совпадение. С другой стороны, метод FindAllString
, на что намекает название, вернет срез строк со всеми найденными совпадениями.
Тип Regexp
предлагает обширный набор методов с префиксом FindXXX
. В данной инструкции описываются только вариации String
, которые обычно наиболее полезны. Обратите внимание, что в предыдущем коде используется функция MustCompile
из пакета regexp
, что может привести к сбою в случае неправильного регулярного выражения.
Помимо сложно совпадающего паттерна регулярного выражения можно задействовать совпадение только подстрок. Данный подход был описан в теме Поиск слов в строке.
Администрирую данный сайт с целью распространения как можно большего объема обучающего материала для языка программирования Go. В IT с 2008 года, с тех пор изучаю и применяю интересующие меня технологии. Проявляю огромный интерес к машинному обучению и анализу данных.
E-mail: vasile.buldumac@ati.utm.md
Образование
Технический Университет Молдовы (utm.md), Факультет Вычислительной Техники, Информатики и Микроэлектроники
- 2014 — 2018 Universitatea Tehnică a Moldovei, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Universitatea Tehnică a Moldovei, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»