Golang 正则表达式用于分离一个公式。

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

Golang Regular expression to separate a formula

问题

需要将类似于1-(a+b-b-d)*100的表达式拆分为1、a+b-b-d和100。

我尝试了(\+|-|\*|\/),它将字符串拆分为1 (a b b d) 100。

英文:

Need to split something like 1-(a+b-b-d)*100 into 1, a+b-b-d, 100

I tried (\+|-|\*|\/) which will split the string into 1 (a b b d) 100

答案1

得分: 1

正则表达式模式:

  1. ^(\d+?)\-(\(.+?\))\*(\d+?)$

Go Playground

  1. package main
  2. import (
  3. "log"
  4. "regexp"
  5. )
  6. func main() {
  7. reg := regexp.MustCompile(`^(\d+?)\-(\(.+?\))\*(\d+?)$`)
  8. str := `1-(a+b-b-d)*100`
  9. // see: https://pkg.go.dev/regexp#Regexp.FindAllSubmatch
  10. ret := reg.FindAllSubmatch([]byte(str), -1)
  11. log.Printf("%s %s %s", ret[0][1], ret[0][2], ret[0][3])
  12. }
英文:

regular expression pattern:

  1. ^(\d+?)\-(\(.+?\))\*(\d+?)$

Go Playground

  1. package main
  2. import (
  3. "log"
  4. "regexp"
  5. )
  6. func main() {
  7. reg := regexp.MustCompile(`^(\d+?)\-(\(.+?\))\*(\d+?)$`)
  8. str := `1-(a+b-b-d)*100`
  9. // see: https://pkg.go.dev/regexp#Regexp.FindAllSubmatch
  10. ret := reg.FindAllSubmatch([]byte(str), -1)
  11. log.Printf("%s %s %s", ret[0][1], ret[0][2], ret[0][3])
  12. }

huangapple
  • 本文由 发表于 2022年7月20日 03:33:23
  • 转载请务必保留本文链接:https://go.coder-hub.com/73042565.html
匿名

发表评论

匿名网友

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

确定