当前缀出现时,正则表达式从字符串中提取数字集,而不匹配所述前缀

时间:2017-08-31 17:39:54

标签: regex go

正如标题中所述,鉴于我有一个像这样的字符串的情况:

"somestring~200~122"

我希望正则表达式匹配前缀“〜”出现时的数字。所以我最终可以[200,122]结束。

匹配前缀是必要的,因为我需要防止下面的字符串不匹配的情况

"somestring~abc200~def122"

对于其他上下文:正如标题中所述,我正在使用go所以我计划使用类似下面的内容来获取字符串中的数字:

pattern := regexp.MustCompile("regex i need help with")
numbers := pattern.FindAllString(host, -1)

1 个答案:

答案 0 :(得分:2)

您可以使用FindAllStringSubmatch提取仅包含数字的组。下面是一个示例,它查找~后跟数字的所有实例。它还将所有匹配转换为整数 并将它们插入切片中:

package main

import (
    "fmt"
    "regexp"
    "strconv"
)

func main() {
    host := "somestring~200~122"
    pattern := regexp.MustCompile(`~(\d+)`)
    numberStrings := pattern.FindAllStringSubmatch(host, -1)
    numbers := make([]int, len(numberStrings))
    for i, numberString := range numberStrings {
        number, err := strconv.Atoi(numberString[1])
        if err != nil {
            panic(err)
        }
        numbers[i] = number
    }
    fmt.Println(numbers)
}

https://play.golang.org/p/09YyewtRXz