当前位置: 首页 > 面试题库 >

获取Golang正则表达式中括号内的所有子字符串

史骏祥
2023-03-14
问题内容

我想使用正则表达式获取所有括号内的所有子字符串。

作为字符串“ foo(bar)foo(baz)golang”的示例,我想要“ bar”和“ baz”

在python中我可以做 re.findall("(?<=\()[^)]+(?=\))", "foo(bar)foo(baz)golang")

怎么做呢?


问题答案:

goregexp软件包不支持零宽度环顾四周。您可以通过以下regexp.FindAllStringSubmatch()功能利用捕获的分组:

package main

import (
    "regexp"
    "fmt"
)

func main() {
    str := "foo(bar)foo(baz)golang"
    rex := regexp.MustCompile(`\(([^)]+)\)`)
    out := rex.FindAllStringSubmatch(str, -1)

    for _, i := range out {
        fmt.Println(i[1])
    }
}

输出:

bar
baz

正则表达式\(([^)]+)\)

  • \( 匹配文字 (

  • ([^)]+)匹配串高达旁边),并把比赛以捕获组,在这里你可以使用非greeedy比赛.*?\)

  • \) 匹配文字 )

去游乐场演示



 类似资料:
  • 我试图创建一个正则表达式模式来获取给定字符串中的所有数字,这些数字位于方括号内并用逗号分隔。输出应该是这样的, 数字1=45 数字2=66 等等...到目前为止,我所拥有的只是一个贪婪抓住方括号内一切的模式。 我是否应该创建两个模式,一个是贪婪模式,然后是第二个模式,以搜索贪婪输出中由逗号分隔的所有数字?还是只创建一个模式更有效?

  • 问题内容: 我试图编写一个正则表达式,该表达式返回括号之间的字符串。例如:我想获取位于字符串“(”和“)”之间的字符串 会回来 找到正则表达式以获取Javascript中两个字符串之间的字符串,但是我对regex并不陌生。我不知道如何在正则表达式中使用’(’,’)’ 问题答案: 您需要创建一组转义的(带有)括号(与括号匹配)和一组常规的括号来创建捕获组: 分解: :匹配左括号 :开始捕获组 :匹配

  • 上面的正则表达式返回括号之间的文本。 如: 如何重写上面的正则表达式,所以我提供了一个类似的字符串,它将返回。i、 e带括号的部分,其中包含大括号中的字符串。

  • 问题内容: 当我使用某种方式时,它仍然会触发,好像连字符无效。我试着和 问题答案: 转义使用应该没问题,但是您也可以尝试将其放在字符类的开头或结尾。这应该为您工作:

  • 问题内容: 不幸的是,尽管尽我所能记住,每年尝试至少一年学习一次正则表达式,但我却经常忘记,因为我很少使用它们。今年,我新年的决心是不要再尝试学习正则表达式因此,今年,为了避免让我流泪,我将把它交给Stack Overflow_ 。 我想以这种格式传递一个字符串,然后返回该字符串。有人能协助我们坚持我的新年决议吗? 问题答案: 如果您的字符串将始终是该格式,则正则表达式会显得过大: 表示以一个字符

  • 问题内容: 我试图从圆括号中提取一个字符串。 比方说,我有,我只想输出字符串。 我找到了此链接和此正则表达式: 但是,我无法弄清楚如何获得想要的结果。 任何帮助,将不胜感激。谢谢! 问题答案: String str=”John Doe (123456789)”; System.out.println(str.substring(str.indexOf(“(“)+1,str.indexOf(“)”)