Slette tegn som matcher et mønster

Go:
Slette tegn som matcher et mønster

Hvordan:

I Go kan sletting av tegn som matcher et mønster effektivt utføres ved bruk av regexp-pakken. Her vil vi vise hvordan du fjerner alle sifre, deretter alle ikke-alfanumeriske tegn fra en streng som eksempler.

  1. Fjerne Alle Sifre:
package main

import (
    "fmt"
    "regexp"
)

func main() {
    text := "Go1 er kul, men Go2 blir kulere! Nå: 2023."
	
    // Kompiler det regulære uttrykket for sifre
    re, err := regexp.Compile("[0-9]+")
    if err != nil {
        fmt.Println("Feil under kompilering av regex:", err)
        return
    }
	
    // Erstatt sifre med en tom streng
    result := re.ReplaceAllString(text, "")
	
    fmt.Println(result) // Utdata: Go er kul, men Go blir kulere! Nå: .
}
  1. Fjerne Alle Ikke-Alfanumeriske Tegn:
package main

import (
    "fmt"
    "regexp"
)

func main() {
    text := "Go er #1 @ programmeringsspråk!"
	
    // Kompiler det regulære uttrykket for ikke-alfanumeriske tegn
    re, err := regexp.Compile("[^a-zA-Z0-9]+")
    if err != nil {
        fmt.Println("Feil under kompilering av regex:", err)
        return
    }
	
    // Erstatt ikke-alfanumeriske tegn med en tom streng
    result := re.ReplaceAllString(text, "")
	
    fmt.Println(result) // Utdata: Goer1programmeringsspråk
}

Dypdykk

regexp-pakken i Go tilbyr et kraftfullt grensesnitt for mønstersøk og manipulasjon med regulære uttrykk. Implementasjonen er avledet fra RE2, et bibliotek for regulære uttrykk designet for å garantere en lineær tidsutførelse, og unngår muligheten for problemer med “katastrofal tilbakesporing” til stede i noen andre regex-motorer. Dette gjør Go’s regex relativt sikker og effektiv for et bredt spekter av applikasjoner.

Selv om regexp-pakken er en omfattende løsning for å håndtere mønstre, er det verdt å merke seg at for enklere eller svært spesifikke strengmanipulasjoner, kan andre strengfunksjoner som strings.Replace(), strings.Trim(), eller skiving tilby mer ytelseseffektive alternativer. Regulære uttrykk er et kraftfullt verktøy, men deres relative beregningsutgift betyr at for operasjoner som kan spesifiseres uten dem, kan utforsking av standardbibliotekalternativer noen ganger føre til enklere og mer effektiv kode.