我必須使用正則運算式和命名組來分隔要分隔的行格式。第一種格式是:
a (>= 1.1)
第二種格式是:
b (>= 1.1, < 2.0)
我想為每個運算子創建一個匹配版本的組,并在括號外標記字母。
例如:
n-> b
o1 -> >=
v1 -> 1.1
o2 -> <
v2 -> 2.0
我已經嘗試并創建了以下正則運算式:
(?P<n>\S ) *(\(((?P<o>[>=<~]?[>=<~])? (?P<v>\S ))*\))?\s*$
但我無法分隔括號內的文字。
請注意,在 GO 正則運算式中不支持向后看\向前看。
有沒有辦法用相同的正則運算式分隔內容?
謝謝!
uj5u.com熱心網友回復:
@blackgreen 是對的
package main
import (
"fmt"
"regexp"
)
func myRegx(s string) (n string, o []string, v []string) {
regx := regexp.MustCompile(`(\S ) \(([>=<] )\s ([\d\.]*)(,\s ([>=<] )\s ([\d.] ))?\)`)
b := regx.FindStringSubmatch(s)
n = b[1]
if len(b) < 4 {
o = append(o, b[2])
v = append(v, b[3])
} else {
o = append(o, b[2])
v = append(v, b[3])
o = append(o, b[5])
v = append(v, b[6])
}
return n, o, v
}
func main() {
n, o, v := myRegx("b (>= 1.1, < 2.0)")
fmt.Printf("n: %v o:%v v:%v\n", n, o, v)
n, o, v = myRegx("a (>= 1.1)")
fmt.Printf("n: %v o:%v v:%v\n", n, o, v)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/524288.html
標籤:正则表达式去正则表达式组
