regex

package module
v3.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 26, 2022 License: MIT Imports: 13 Imported by: 1

README

Go Regex

donation link

A High Performance PCRE Regex Package That Uses A Cache.

Simplifies the the go-pcre regex package. After calling a regex, the compiled output gets cached to improve performance.

This package uses the go-pcre package for better performance.

Installation


  sudo apt-get install libpcre3-dev
  go get github.com/AspieSoft/go-regex/v3

Usage


import (
  "github.com/AspieSoft/go-regex/v3"
)

// pre compile a regex into the cache
// this method also returns the compiled pcre.Regexp struct
regex.Compile(`re`)

// compile a regex and safely escape user input
regex.Compile(`re %1`, `this will be escaped .*`); // output: this will be escaped \.\*
regex.Compile(`re %1`, `hello \n world`); // output: hello \\n world (note: the \ was escaped, and the n is literal)

// use %n to reference a param
// use %{n} for param indexes with more than 1 digit
regex.Compile(`re %1 and %2 ... %{12}`, `param 1`, `param 2` ..., `param 12`);

// manually escape a string
regex.Escape(`(.*)? \$ \\$ \\\$ regex hack failed`)

// run a replace function (most advanced feature)
regex.RepFunc(myByteArray, regex.Compile(`(?flags)re(capture group)`), func(data func(int) []byte) []byte {
  data(0) // get the string
  data(1) // get the first capture group

  return []byte("")

  // if the last option is true, returning nil will stop the loop early
  return nil
}, true /* optional: if true, will not process a return output */)

// run a simple light replace function
regex.RepStr(myByteArray, regex.Compile(`re`), myReplacementByteArray)

// return a bool if a regex matches a byte array
regex.Match(myByteArray, regex.Compile(`re`))

// split a byte array in a similar way to JavaScript
regex.Split(myByteArray, regex.Compile(`re|(keep this and split like in JavaScript)`))

// a regex string is modified before compiling, to add a few other features
`use \' in place of ` + "`" + ` to make things easier`
`(?#This is a comment in regex)`

// an alias of pcre.Regexp
regex.Regexp


// another helpful function
// this method makes it easier to return results to a regex function
regex.JoinBytes("string", []byte("byte array"), 10, 'c', data(2))

// the above method can be used in place of
append(append(append(append([]byte("string"), []byte("byte array")...), []byte(strconv.Itoa(10))...), 'c'), data(2)...)

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AutoInstallLinuxDependencies

func AutoInstallLinuxDependencies()

AutoInstallLinuxDependencies will automatically detect and install dependencies if missing from debian or arch linux debian: libpcre3-dev arch: pcre-dev

func Escape

func Escape(re string) string

Escape will escape regex special chars

func JoinBytes

func JoinBytes(bytes ...interface{}) []byte

JoinBytes is an easy way to join multiple values into a single []byte accepts: []byte, byte, int32, string, [][]byte, int, int64, float64, float32

func Match

func Match(str []byte, reg *Regexp) bool

Match returns true if a []byte matches a regex

func MatchRef

func MatchRef(str *[]byte, reg *Regexp) bool

MatchRef returns true if a string matches a regex Uses Pointers For Improved Performance

func RepFunc

func RepFunc(str []byte, reg *Regexp, rep func(data func(int) []byte) []byte, blank ...bool) []byte

RepFunc replaces a string with the result of a function similar to JavaScript .replace(/re/, function(data){})

func RepFuncFirst

func RepFuncFirst(str []byte, reg *Regexp, rep func(func(int) []byte) []byte, blank ...bool) []byte

RepFuncFirst is a copy of the RepFunc method modified to only run once

func RepFuncRef

func RepFuncRef(str *[]byte, reg *Regexp, rep func(data func(int) []byte) []byte, blank ...bool) []byte

RepFuncRef replace a string with the result of a function similar to JavaScript .replace(/re/, function(data){}) Uses Pointers For Improved Performance

func RepStr

func RepStr(str []byte, reg *Regexp, rep []byte) []byte

RepStr replaces a string with another string note: this function is optimized for performance, and the replacement string does not accept replacements like $1

func RepStrComplex

func RepStrComplex(str []byte, reg *Regexp, rep []byte) []byte

RepStrComplex is a more complex version of the RepStr method this function will replace things in the result like $1 with your capture groups use $0 to use the full regex capture group use ${123} to use numbers with more than one digit

func RepStrComplexRef

func RepStrComplexRef(str *[]byte, reg *Regexp, rep []byte) []byte

RepStrComplexRef is a more complex version of the RepStrRef method this function will replace things in the result like $1 with your capture groups use $0 to use the full regex capture group use ${123} to use numbers with more than one digit Uses Pointers For Improved Performance

func RepStrComplexRefRes

func RepStrComplexRefRes(str *[]byte, reg *Regexp, rep *[]byte) []byte

RepStrComplexRefRes is a more complex version of the RepStrRefRes method this function will replace things in the result like $1 with your capture groups use $0 to use the full regex capture group use ${123} to use numbers with more than one digit Uses Pointers For Improved Performance (also on result)

func RepStrRef

func RepStrRef(str *[]byte, reg *Regexp, rep []byte) []byte

RepStrRef replaces a string with another string note: this function is optimized for performance, and the replacement string does not accept replacements like $1 Uses Pointers For Improved Performance

func RepStrRefRes

func RepStrRefRes(str *[]byte, reg *Regexp, rep *[]byte) []byte

RepStrRefRes replaces a string with another string note: this function is optimized for performance, and the replacement string does not accept replacements like $1 Uses Pointers For Improved Performance (also on result)

func Split

func Split(str []byte, reg *Regexp) [][]byte

Split splits a string, and keeps capture groups Similar to JavaScript .split(/re/)

func SplitRef

func SplitRef(str *[]byte, reg *Regexp) [][]byte

SplitRef splits a string, and keeps capture groups Similar to JavaScript .split(/re/) Uses Pointers For Improved Performance

Types

type Regexp

type Regexp = pcre.Regexp

func Compile

func Compile(re string, params ...string) *Regexp

Compile compiles a regular expression and store it in the cache

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL