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

标签 regex go

如标题所述,假设我有这样一个字符串:

"somestring~200~122"

我想在出现前缀“~”时使用正则表达式来匹配数字。所以我最终可以得到 [200, 122]。

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

"somestring~abc200~def122"

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

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

最佳答案

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

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

关于正则表达式在出现前缀时从字符串中提取数字集,而不匹配所述前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45987254/

相关文章:

带括号的 PHP 正则表达式

go - Golang在处理程序功能之外获取请求

go - 如何使用 GORM 检查 CRUD 操作中的错误?

go - AssertCalled 总是因 testify 库而失败

r - 使用 str split 但基于特殊字符的位置

javascript - Angular 抛出错误 $parse : ueoe Unexpected End of Expression

python - 在python中,如何使用正则表达式提取字符串?

c# - 删除正则表达式模式在字符串末尾有尾随反斜杠双引号的文本

go - 在 Go 中是否可以访问存储在客户端本地存储中的 JWT token ?

go - 鸭子打字函数