2 回答

TA贡献1877条经验 获得超6个赞
环顾四周后,我认为@tshiono的想法是最有意义的,但正则表达式与我的期望不符。我最终得到了这样的东西
package main
import (
"fmt"
"regexp"
)
func main() {
st := []string{
"test-adccount",
"s-asdgaysdtuaystdua",
"2342348jtdstyfu",
"kdshkjfshdkfjhd-jkshdfjkshdf",
"uysiufysdusidyf-jsdkhfjksdhf",
"ausyduaysidyaisyd",
"2abc-f",
"d-23423423",
"-iasodaisdyauiysd",
"sudyfisdufy82|ldjf",
"klskdjfsd898883---sdfkjskdfjsld",
}
for _, s := range st {
r1 := regexp.MustCompile(`^([\da-zA-Z]+)([\da-zA-Z-]+)$`)
r2 := regexp.MustCompile(`^(d-).+$`)
if r1.MatchString(s) && !r2.MatchString(s) {
fmt.Println(fmt.Sprintf("%s :: matched", s))
} else {
fmt.Println(fmt.Sprintf("%s :: does not matched", s))
}
}
}
https://play.golang.org/p/j-7INwyDwU4

TA贡献1798条经验 获得超7个赞
正向查找断言可以在不使用的情况下更改,但否定查找不能。我们需要将正则表达式拆分为两个步骤逻辑。
例如,我们可以在中说以下内容:PCREpython
import re
s = '2abc-D' # matches
#s = 'd-D' # doesn't match
m = re.match(r'^(?!d-)([\da-zA-Z]+)(-[\da-zA-Z])$', s)
if (m):
print(m.groups())
在 中,我们需要说:Golang
package main
import (
"fmt"
"regexp"
)
func main() {
s := "2abc-D" // matches
// s := "d-D" // doesn't match
r := regexp.MustCompile(`^([\da-zA-Z]+)(-[\da-zA-Z])$`)
if !(regexp.MustCompile(`^d-`).MatchString(s)) {
fmt.Println(r.FindStringSubmatch(s))
}
}
- 2 回答
- 0 关注
- 143 浏览
添加回答
举报