扩展正则表达式,现在regexp.MatchString不存在了吗?

huangapple go评论120阅读模式
英文:

Extended regexp and now regexp.MatchString doesn't exist?

问题

我想扩展regexp.Regexp,因为它没有快速的MatchSuffix或MatchPrefix函数。我像这样扩展它:

package regexext

type RegexExt struct {
	*regexp.Regexp
	Prefix string
	Suffix string
}

还有一些简单的函数:

func GetRegexExt(expr, prefix, suffix string) *RegexExt {
	regex := regexp.MustCompile(expr)
	return &RegexExt{
		regex,
		prefix,
		suffix,
	}
}

func (f *RegexExt) PrefixMatch(v string) bool {
	if f.Suffix != "" {
		if !strings.HasSuffix(v, f.Suffix) {
			return false
		}
	}
}

func (f *RegexExt) SuffixMatch(v string) bool {
	if f.Prefix != "" {
		if !strings.HasPrefix(v, f.Prefix) {
			return false
		}
	}
}

但是现在,在我的代码的任何其他地方,我尝试使用regexp.MatchString时,它会显示未定义。为什么?有没有更好的方法来扩展正则表达式结构?

编辑:
我如何使用regexp.MatchString:

package somethingelse

import "regexp"

func SimpleMatch(s, v string) {
    // ...一些解析...
    if regexp.MatchString(s, v) {
        // 如果匹配,则执行某些操作
    }
}

这只是一个示例,因为它是一个共享包,但即使我的依赖项也会显示“包regexp未声明MatchString”。

英文:

I wanted to extend regexp.Regexp as it doesn't have a quick MatchSuffix or MatchPrefix function. I extended it like so

package regexext

type RegexExt struct {
	*regexp.Regexp
	Prefix string
	Suffix string
}

With some simple functions

func GetRegexExt(expr, prefix, suffix string) *RegexExt {
	regex := regexp.MustCompile(expr)
	return &RegexExt{
		regex,
		prefix,
		suffix,
	}
}

func (f *RegexExt) PrefixMatch(v string) bool {
	if f.Suffix != "" {
		if !strings.HasSuffix(v, f.Suffix) {
			return false
		}
	}
}

func (f *RegexExt) SuffixMatch(v string) bool {
	if f.Prefix != "" {
		if !strings.HasPrefix(v, f.Prefix) {
			return false
		}
	}
}

but now anywhere else in my code I try and use regexp.MatchString it says it is undefined. Why? Is there a better way to extend the regex struct?

edit:
How I am using regexp.MatchString

package somethingelse

import "regexp"

func SimpleMatch(s, v string) {
    ... some parsing ...
    if regexp.MatchString(s, v) {
        // Do something if match
    }
}

This is just an example as it is a shared package but even my dependencies say MatchString not declared by package regexp

答案1

得分: 1

原来我的go安装文件损坏了。重新安装Go解决了这个问题。

英文:

Turns out my go install was corrupted. Reinstalling Go fixed this issue

huangapple
  • 本文由 发表于 2022年12月16日 13:54:53
  • 转载请务必保留本文链接:https://go.coder-hub.com/74820688.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定