Видалення символів за зразком

Go:
Видалення символів за зразком

Як:

У Go видалення символів, що відповідають паттерну, можна ефективно виконати за допомогою пакета regexp. Тут ми покажемо, як видалити всі цифри, а потім всі не алфанумеричні символи з рядка як приклад.

  1. Видалення всіх цифр:
package main

import (
    "fmt"
    "regexp"
)

func main() {
    text := "Go1 є класним, але Go2 буде крутішим! Зараз: 2023."
	
    // Компілюємо регулярний вираз для цифр
    re, err := regexp.Compile("[0-9]+")
    if err != nil {
        fmt.Println("Помилка компіляції regex:", err)
        return
    }
	
    // Замінюємо цифри на пустий рядок
    result := re.ReplaceAllString(text, "")
	
    fmt.Println(result) // Вивід: Go є класним, але Go буде крутішим! Зараз: .
}
  1. Видалення всіх не алфанумеричних символів:
package main

import (
    "fmt"
    "regexp"
)

func main() {
    text := "Go є #1 @ мовами програмування!"
	
    // Компілюємо регулярний вираз для не алфанумеричних символів
    re, err := regexp.Compile("[^a-zA-Z0-9]+")
    if err != nil {
        fmt.Println("Помилка компіляції regex:", err)
        return
    }
	
    // Замінюємо не алфанумеричні символи на пустий рядок
    result := re.ReplaceAllString(text, "")
	
    fmt.Println(result) // Вивід: Goє1мовамипрограмування
}

Поглиблений огляд

Пакет regexp в Go надає потужний інтерфейс для пошуку відповідностей за шаблоном і маніпулювання з регулярними виразами. Його реалізація походить з RE2, бібліотеки регулярних виразів, спроектованої для гарантування виконання у лінійний час, уникаючи можливості проблем “катастрофічного відстежування”, присутніх в деяких інших регулярних виразах. Це робить регулярні вирази Go відносно безпечними та ефективними для широкого спектра застосувань.

Хоча пакет regexp є всебічним рішенням для роботи з паттернами, варто зауважити, що для простіших або високоспецифічних маніпуляцій з рядками, інші функції рядків, такі як strings.Replace(), strings.Trim() або зрізання, можуть пропонувати більш продуктивні альтернативи. Регулярні вирази - потужний інструмент, але їх відносна обчислювальна витратність означає, що для операцій, які можуть бути вказані без них, дослідження альтернатив стандартної бібліотеки іноді може вести до простішого та ефективнішого коду.