亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 golang 中使用正則表達式將括號內的數據拆分為命名組

在 golang 中使用正則表達式將括號內的數據拆分為命名組

Go
千巷貓影 2023-03-07 16:33:37
我必須使用正則表達式和命名組來設置要分隔的行的格式。第一種格式是: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 中正則表達式不支持后視\前視。有沒有辦法用相同的正則表達式來分隔內容?
查看完整描述

1 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

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)

}


查看完整回答
反對 回復 2023-03-07
  • 1 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號