regex - 获取中间数字的正则表达式

标签 regex go

所以我有这样的东西:

字符串。 (数字 1,数字 2,数字 3) 所以像这样:

布拉布拉布拉。 (1234, 5678, 012)

我想得到第一个数字,即 ( 和 , & 在一个正则表达式中同时忽略逗号前的空格,然后在另一个正则表达式中得到第二个数字而不得到第一个,所以在第一个之间' 和第二个 '

我尝试执行以下操作以获得第一个,但即使有空间也没有用:

^\(\d*,$

我什至试过这个:

^.*?\([^\d]*(\d+)[^\d]*\).*$

还有这个:

\[\((\d+)\).*?\]

我在这里测试它:https://regex101.com/由于某种原因,我总是找不到匹配项

我正在尝试使用Go语言实现它

最佳答案

first regex

\(\s*(\d+)

详情

  • \( - 一个 (
  • \s* - 0+ 个空格
  • (\d+) - 第 1 组:一个或多个数字

还有 second one

\(\s*\d+\s*,\s*(\d+)

与上面相同(删除了第一个数字匹配模式周围的捕获组),但添加了 \s*,\s*(\d+):

  • \s*,\s* - 包含 0+ 个空格的 ,
  • (\d+) - 第 1 组:一个或多个数字

Go playground demo :

主要包

import (
    "regexp"
    "fmt"
)

func main() {
    var str = `bla bla bla . (1234 , 5678 , 012)`
    var re = regexp.MustCompile(`\(\s*(\d+)`)

    match := re.FindStringSubmatch(str)
    fmt.Println(match[1])

    var re2 = regexp.MustCompile(`\(\s*\d+\s*,\s*(\d+)`)
    match2 := re2.FindStringSubmatch(str)
    fmt.Println(match2[1])
}

结果:

1234
5678

关于regex - 获取中间数字的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46817073/

相关文章:

mongodb - Go 和 MongoDB : generic DAO implementation issue

go - cayley quad 中的 "label"是什么?

go - goroutine 和 channel 通信的奇怪行为

javascript - Webstorm Javascript Regex - 正则表达式中的单个字符交替

sockets - ReadFromUDP 不阻塞

javascript - POST 请求在 beego 框架上被视为 OPTIONS

ruby - 在扫描或正则表达式模式中的模式中提取 Ruby 字符串

regex - Vim 正则表达式不匹配字符类中的空格

php - PHP 中的字符串替换

javascript - 惰性组匹配正则表达式