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

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

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

正则表达式模式:

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

Go Playground

package main

import (
	"log"
	"regexp"
)

func main() {
	reg := regexp.MustCompile(`^(\d+?)\-(\(.+?\))\*(\d+?)$`)
	str := `1-(a+b-b-d)*100`
	// see: https://pkg.go.dev/regexp#Regexp.FindAllSubmatch
	ret := reg.FindAllSubmatch([]byte(str), -1)

	log.Printf("%s %s %s", ret[0][1], ret[0][2], ret[0][3])
}

英文:

regular expression pattern:

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

Go Playground

package main

import (
	"log"
	"regexp"
)

func main() {
	reg := regexp.MustCompile(`^(\d+?)\-(\(.+?\))\*(\d+?)$`)
	str := `1-(a+b-b-d)*100`
	// see: https://pkg.go.dev/regexp#Regexp.FindAllSubmatch
	ret := reg.FindAllSubmatch([]byte(str), -1)

	log.Printf("%s %s %s", ret[0][1], ret[0][2], ret[0][3])
}

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:

确定