如标题所述,假设我有这样一个字符串:
"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)
}
关于正则表达式在出现前缀时从字符串中提取数字集,而不匹配所述前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45987254/