本文整理匯總了Golang中regexp/syntax.Regexp.String方法的典型用法代碼示例。如果您正苦於以下問題:Golang Regexp.String方法的具體用法?Golang Regexp.String怎麽用?Golang Regexp.String使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類regexp/syntax.Regexp
的用法示例。
在下文中一共展示了Regexp.String方法的13個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: createRepeatingGenerator
// Returns a generator that will run the generator for r's sub-expression [min, max] times.
func createRepeatingGenerator(regexp *syntax.Regexp, genArgs *GeneratorArgs, min, max int) (*internalGenerator, error) {
if err := enforceSingleSub(regexp); err != nil {
return nil, err
}
generator, err := newGenerator(regexp.Sub[0], genArgs)
if err != nil {
return nil, generatorError(err, "failed to create generator for subexpression: /%s/", regexp)
}
if min == noBound {
min = int(genArgs.MinUnboundedRepeatCount)
}
if max == noBound {
max = int(genArgs.MaxUnboundedRepeatCount)
}
return &internalGenerator{regexp.String(), func() string {
n := min + genArgs.rng.Intn(max-min+1)
var result bytes.Buffer
for i := 0; i < n; i++ {
result.WriteString(generator.Generate())
}
return result.String()
}}, nil
}
示例2: opConcat
func opConcat(regexp *syntax.Regexp, genArgs *GeneratorArgs) (*internalGenerator, error) {
enforceOp(regexp, syntax.OpConcat)
generators, err := newGenerators(regexp.Sub, genArgs)
if err != nil {
return nil, generatorError(err, "error creating generators for concat pattern /%s/", regexp)
}
return &internalGenerator{regexp.String(), func() string {
return genArgs.Executor.Execute(generators)
}}, nil
}
示例3: opAlternate
func opAlternate(regexp *syntax.Regexp, genArgs *GeneratorArgs) (*internalGenerator, error) {
enforceOp(regexp, syntax.OpAlternate)
generators, err := newGenerators(regexp.Sub, genArgs)
if err != nil {
return nil, generatorError(err, "error creating generators for alternate pattern /%s/", regexp)
}
numGens := len(generators)
return &internalGenerator{regexp.String(), func() string {
i := genArgs.rng.Intn(numGens)
generator := generators[i]
return generator.Generate()
}}, nil
}
示例4: opConcat
func opConcat(regexp *syntax.Regexp, genArgs *GeneratorArgs) (*internalGenerator, error) {
enforceOp(regexp, syntax.OpConcat)
generators, err := newGenerators(regexp.Sub, genArgs)
if err != nil {
return nil, generatorError(err, "error creating generators for concat pattern /%s/", regexp)
}
return &internalGenerator{regexp.String(), func() string {
var result bytes.Buffer
for _, generator := range generators {
result.WriteString(generator.Generate())
}
return result.String()
}}, nil
}
示例5: createRepeatingGenerator
// Returns a generator that will run the generator for r's sub-expression [min, max] times.
func createRepeatingGenerator(regexp *syntax.Regexp, genArgs *GeneratorArgs, min int, max int) (*internalGenerator, error) {
if err := enforceSingleSub(regexp); err != nil {
return nil, err
}
generator, err := newGenerator(regexp.Sub[0], genArgs)
if err != nil {
return nil, generatorError(err, "failed to create generator for subexpression: /%s/", regexp)
}
if max < 0 {
max = maxUpperBound
}
return &internalGenerator{regexp.String(), func() string {
n := min + genArgs.rng.Intn(max-min+1)
return executeGeneratorRepeatedly(genArgs.Executor, generator, n)
}}, nil
}
示例6: opCapture
func opCapture(regexp *syntax.Regexp, args *GeneratorArgs) (*internalGenerator, error) {
enforceOp(regexp, syntax.OpCapture)
if err := enforceSingleSub(regexp); err != nil {
return nil, err
}
groupRegexp := regexp.Sub[0]
generator, err := newGenerator(groupRegexp, args)
if err != nil {
return nil, err
}
// Group indices are 0-based, but index 0 is the whole expression.
index := regexp.Cap - 1
return &internalGenerator{regexp.String(), func() string {
return args.CaptureGroupHandler(index, regexp.Name, groupRegexp, generator, args)
}}, nil
}
示例7: CompileSyntax
// CompileSyntax is like Compile but takes a syntax tree as input.
func CompileSyntax(ast *syntax.Regexp) (*Regexp, error) {
return compileSyntax(ast, ast.String(), true)
}
示例8: noop
// Generator that does nothing.
func noop(regexp *syntax.Regexp, args *GeneratorArgs) (*internalGenerator, error) {
return &internalGenerator{regexp.String(), func() string {
return ""
}}, nil
}
示例9: opCharClass
// Handles syntax.ClassNL because the parser uses that flag to generate character
// classes that respect it.
func opCharClass(regexp *syntax.Regexp, args *GeneratorArgs) (*internalGenerator, error) {
enforceOp(regexp, syntax.OpCharClass)
charClass := parseCharClass(regexp.Rune)
return createCharClassGenerator(regexp.String(), charClass, args)
}
示例10: opAnyCharNotNl
func opAnyCharNotNl(regexp *syntax.Regexp, args *GeneratorArgs) (*internalGenerator, error) {
enforceOp(regexp, syntax.OpAnyCharNotNL)
charClass := newCharClass(1, rune(math.MaxInt32))
return createCharClassGenerator(regexp.String(), charClass, args)
}
示例11: opAnyChar
func opAnyChar(regexp *syntax.Regexp, args *GeneratorArgs) (*internalGenerator, error) {
enforceOp(regexp, syntax.OpAnyChar)
return &internalGenerator{regexp.String(), func() string {
return runesToString(rune(args.rng.Int31()))
}}, nil
}
示例12: opLiteral
func opLiteral(regexp *syntax.Regexp, args *GeneratorArgs) (*internalGenerator, error) {
enforceOp(regexp, syntax.OpLiteral)
return &internalGenerator{regexp.String(), func() string {
return runesToString(regexp.Rune...)
}}, nil
}
示例13: opEmptyMatch
func opEmptyMatch(regexp *syntax.Regexp, args *GeneratorArgs) (*internalGenerator, error) {
enforceOp(regexp, syntax.OpEmptyMatch)
return &internalGenerator{regexp.String(), func() string {
return ""
}}, nil
}