func (v *VerbalExpression) EndOfLine() *VerbalExpression {
	if !strings.HasSuffix(v.suffixes, "$") {
		v.suffixes += "$"
	}
	return v
}
EndOfLine tells verbalexpressions to match a end of line.
Warning, to check multiple line, you must use SearchOneLine(true)
package verbalexpressions
import (
	"fmt"
	"log"
	"regexp"
	"strconv"
	"strings"
)
type Flag uint
const (
	MULTILINE Flag = 1 << iota
	IGNORE_CASE
	DOTALL
	UNGREEDY
	GLOBAL
)
type VerbalExpression struct {
	expression string
	parts      []string
	suffixes   string
	prefixes   string
	flags      Flag
	compiled   bool
	regexp     *regexp.Regexp
}
func quote(s string) string {
	return regexp.QuoteMeta(s)
}
func tostring(i interface{}) string {
	var r string
	switch x := i.(type) {
	case string:
		r = x
	case uint64:
		r = strconv.FormatUint(x, 10)
	case int64:
		r = strconv.FormatInt(x, 10)
	case uint:
		r = strconv.FormatUint(uint64(x), 10)
	case int:
		r = strconv.FormatInt(int64(x), 10)
	default:
		log.Panicf("Could not convert %v %t", x, x)
	}
	return r
}
func New() *VerbalExpression {
	r := new(VerbalExpression)
	r.flags = MULTILINE | GLOBAL
	r.parts = make([]string, 0)
	return r
}
func (v *VerbalExpression) addmodifier(f Flag) *VerbalExpression {
	v.compiled = false  
	v.flags |= f
	return v
}
func (v *VerbalExpression) removemodifier(f Flag) *VerbalExpression {
	v.compiled = false  
	v.flags &= ^f
	return v
}
func (v *VerbalExpression) getFlags() string {
	flags := "misU"  
	result := []rune{}
	for i, flag := range flags {
		if v.flags&(1<<uint(i)) != 0 {
			result = append(result, flag)
		}
	}
	return string(result)
}
func (v *VerbalExpression) add(s string) *VerbalExpression {
	v.compiled = false  
	v.expression += s
	return v
}
func (v *VerbalExpression) BeginCapture() *VerbalExpression {
	v.suffixes += ")"
	return v.add("(")
}
func (v *VerbalExpression) EndCapture() *VerbalExpression {
	v.suffixes = strings.Replace(v.suffixes, ")", "", 1)
	return v.add(")")
}
func (v *VerbalExpression) Anything() *VerbalExpression {
	return v.add(`(?:.*)`)
}
func (v *VerbalExpression) AnythingBut(s string) *VerbalExpression {
	return v.add(`(?:[^` + quote(s) + `]*)`)
}
func (v *VerbalExpression) Something() *VerbalExpression {
	return v.add(`(?:.+)`)
}
func (v *VerbalExpression) SomethingBut(s string) *VerbalExpression {
	return v.add(`(?:[^` + quote(s) + `]+)`)
}