¿Qué es Regex en Golang?

Una expresión regular (o RegEx) es una secuencia especial de caracteres que define un patrón de búsqueda que se utiliza para hacer coincidir un texto específico. En Golang, hay un paquete incorporado para expresiones regulares, llamado paquete regexp que contiene toda la lista de acciones como filtrar, reemplazar, validar o extraer. Utiliza los estándares de sintaxis RE2. La función MatchString() informa si la string pasada como parámetro contiene alguna coincidencia del patrón de expresión regular.

Sintaxis:

func MatchString(pattern string, s string)

Devoluciones: bool coincidente, err error

Ejemplo:

// Golang program to illustrate the
// string matching using regexp
// in-built function
package main
  
import (
    "fmt"
    "regexp"
)
  
func main() {
  
    // string in which the pattern
    // is to be found
    str := "geeksforgeeks"
  
    // returns true if the pattern is present
    // in the string, else returns false
    // err is nil if the regexp is valid
    match1, err := regexp.MatchString("geeks", str)
    fmt.Println("Match: ", match1, " Error: ", err)
  
    // this returns false as the match
    // is unsuccessful
    str2 := "ComputerScience"
    match2, err := regexp.MatchString("geeks", str2)
    fmt.Println("Match: ", match2, "Error: ", err)
  
    // this will throw an error
    // as the pattern is not valid
    match3, err := regexp.MatchString("geek(s", str2)
    fmt.Println("Match: ", match3, "Error: ", err)
}

Producción:

Match:  true  Error:  <nil>
Match:  false Error:  <nil>
Match:  false Error:  error parsing regexp: missing closing ): `geek(s`

Para almacenar expresiones regulares complicadas para reutilizarlas más tarde, el método Compile() analiza una expresión regular y devuelve un objeto Regexp si tiene éxito, que se puede usar para hacer coincidir el texto. El prototipo de la función es:

func Compile(expr string) (*Regexp, error)

Hay otros varios métodos proporcionados en el paquete regexp para hacer coincidir las strings como se muestra:

// Golang program to illustrate the
// string matching using regexp
// in-built functions
package main
  
import (
    "fmt"
    "regexp"
    "strings"
)
  
func main() {
  
    // a regex object which
    // can be reused later
    re, _ := regexp.Compile("geek")
  
    // string to be matched
    str := "I love geeksforgeeks"
  
    // returns the slice of first
    // and last index
    match := re.FindStringIndex(str)
    fmt.Println(match)
  
    str2 := "I love computer science"
  
    // prints an empty slice
    // as there is no match
    match2 := re.FindStringIndex(str2)
    fmt.Println(match2)
  
    // finds the first or leftmost
    // match to a given pattern.
    re2, _ := regexp.Compile("[0-9]+-v.*g")
  
    // matches one or more numbers followed
    // by v and any number of characters upto g
    match3 := re2.FindString("20024-vani_gupta")
    fmt.Println(match3)
  
    // returns a slice of all successive
    // matches of the expression
    match4 := re.FindAllStringSubmatchIndex("I'am a geek at"+
                                        " geeksforgeeks", -1)
    fmt.Println(match4)
  
    // returns a copy and replaces
    // matches with the replacement string
    re3, _ := regexp.Compile(" ")
    match5 := re3.ReplaceAllString("All I do"+
                    " is code everytime.", "+")
    fmt.Println(match5)
  
    // returns a copy in which all matches are
    // replaced by return value of function
    re4, _ := regexp.Compile("[aeiou]+")
    match6 := re4.ReplaceAllStringFunc("All I do"+
           " is code everytime.", strings.ToUpper)
    fmt.Println(match6)
}

Producción:

[7 11]
[]
20024-vani_g
[[7 11] [15 19] [23 27]]
All+I+do+is+code+everytime.
All I dO Is cOdE EvErytImE.

Publicación traducida automáticamente

Artículo escrito por vanigupta20024 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *