英文:
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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论