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

如何遍历正则表达式匹配组

闻华容
2023-03-14
问题内容

说我的数据看起来像这样:

name=peter 
age=40
id=99

我可以创建一个正则表达式

(\w+)=(\w+)

要将名称,年龄和id匹配到第1组中,将peter,40、99匹配到第2组中。但是,我要迭代甚至选择地遍历这些组。例如,

如果group1值是id,我想进行其他处理。所以算法就像

//iterate through all the group1, if I see group1 value is "id", then I assign the corresponding group2 key to some other variable. E.g., newVar = 99

我想做的第二件事就是跳转到匹配的group1的第三个实例,并获取键“ id”,而不是进行迭代。


问题答案:

使用FindAllStringSubmatch查找所有匹配项:

pat := regexp.MustCompile(`(\w+)=(\w+)`)
matches := pat.FindAllStringSubmatch(data, -1) // matches is [][]string

像这样遍历匹配的组:

for _, match := range matches {
    fmt.Printf("key=%s, value=%s\n", match[1], match[2])
}

通过与match [1]比较来检查“ id”:

for _, match := range matches {
    if match[1] == "id" {
        fmt.Println("the id is: ", match[2])
    }
}

通过建立索引获得第三场比赛:

match := matches[2] // third match
fmt.Printf("key=%s, value=%s\n", match[1], match[2])

游乐场的例子



 类似资料:
  • 问题内容: 假设我有以下字符串: 我想查找的所有匹配项,并确保整个字符串与模式匹配。 所以我做了以下事情: 确保整个模式与我想要的匹配。 遍历模式 有没有办法用一个正则表达式来做到这一点? 问题答案: 您可以通过以下方式验证和迭代一个正则表达式的匹配: 通过在正则表达式的开头放置a来确保匹配之间没有不匹配的字符(例如),这意味着“上一个匹配的结束”。 通过将字符串的长度与进行比较,以检查是否在最后

  • 我们得到了一些这样的内容:

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 主要内容:基本模式匹配,字符簇,确定重复出现基本模式匹配 一切从最基本的开始。模式,是正则表达式最基本的元素,它们是一组描述字符串特征的字符。模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符、重复出现,或表示上下文。例如: 这个模式包含一个特殊的字符 ^,表示该模式只匹配那些以 once 开头的字符串。例如该模式与字符串 "once upon a time" 匹配,与 "There once was

  • 问题内容: 当字符串以数字开头时,我需要匹配,然后是一个点,然后是一个空格和1个或多个大写字符。匹配必须发生在字符串的开头。我有以下字符串。 我尝试过的正则表达式是: 它不匹配。一个有效的正则表达式将对这个问题有什么作用? 问题答案: (对不起,我先前的错误。大脑现在坚定地投入了。嗯,也许。) 这有效: 分解: =字符串开头 =一个或多个数字 (之所以转义,是因为它在字符串中,因此) =文字(或者

  • 问题内容: 我从以下格式的文件中获取输入: 现在,我想在我的Java代码中读取int1,int2,int3和int4。我该如何在Java中使用正则表达式匹配。谢谢。 问题答案: 为了避免空值: