go - 具有If Else条件的正则表达式

标签 go regex-group

我在Regex的If Else Condition有问题。我有一个包含以下格式的文件。我一直在寻找返回值为0.0.985或3.3.5-3811。
我正在尝试使用正则表达式中的其他条件,但无法使用,有人可以在解决问题时向我解释。

random-app-0.0.985.tgz
busy-app-7.3.1.2-3.3.5-3811-a19874elkc-123254376584.zip
以下是我尝试使用的Go代码
package main

import (
    "fmt"
    "io/ioutil"
    "regexp"
)

func main(){
    content, err:= ioutil.ReadFile("version.txt")
    if err != nil{
        fmt.Println(err)
    }
    version:= string(content)
    re:= regexp.MustCompile(`(\d+).(\d+).(\d+)|(\d+).(\d+).(\d+).(\d+)`)
    result:= re.FindAllStringSubmatch(version,-1)
    for i:= range(result){
        fmt.Println(result[i][0])
    }
}
输出来像
0.0.985
7.3.1
2-3.3
5-3811
19874
123254376584

最佳答案

可以使用以下正则表达式:[\d\.]+[\.-][\d]{2,}

package main

import (
    "regexp"
    "fmt"
)

func main() {
    var re = regexp.MustCompile(`(?m)[\d\.]+[\.-][\d]{2,}`)
    var str = `random-app-0.0.985.tgz
busy-app-7.3.1.2-3.3.5-3811-a19874elkc-123254376584.zip`
    
    for i, match := range re.FindAllString(str, -1) {
        fmt.Println(match, "found at index", i)
    }
}
输出
0.0.985 found at index 0
3.3.5-3811 found at index 1
playground?m多行修饰符。使^和$匹配每行的开始/结束(不仅是字符串的开始/结束)。在这种情况下,差别不大。没有它,它将起作用。[\d\.]+至少匹配一次数字或点的序列(量词+)[\.-]匹配点或连字符[\d]{2,}至少匹配两位数(数量{2,})

关于go - 具有If Else条件的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64132226/

相关文章:

javascript - 正则表达式,如果捕获组匹配字符串

go - 运行时错误 :Invalid memory Address or nil pointer dereference-golang

import - `import` 语句的用法

c# - 如何从正则表达式中提取多个值?

regex - 非捕获子例程

php - 如何使用正则表达式检查字符串是否采用正确的数组格式?

golang所有goroutines都睡着了 - 死锁

go - 将 big.Int 转换为 [2]int64,反之亦然以及二进制补码

go - 为什么 HDFS 使用 golang 抛出意外的 EOF 错误?

java - 显式匹配模式 [] 或 [][] 的正则表达式。?