我可以确认字符串是否与我的正则表达式中的第一个块匹配吗

我有以下代码:


package main


import (

    "fmt"

    "regexp"

)


func main() {

    str := "This is a delimited string, so let's go"

    re := regexp.MustCompile(`(?i)(This is a delimited string)|delimited|string`)

    matches := re.FindAllString(str, -1)

    fmt.Println("We found", len(matches), "matches, that are:", matches)

}

并获得输出为:


We found 1 matches, that are: [This is a delimited string]

如果我将str上面代码中的更改为:


str := "This is not a delimited string, so let's go"

然后我得到的输出是:


We found 2 matches, that are: [delimited string]

两者都是正确的,但在str具有的第一个块中与我的正则表达式中的第一个块1 match匹配,而在显示 2 个匹配项的第二个块中,没有一个与我的正则表达式中的第一个块匹配。100%This is a delimited stringstr


有没有办法,所以我知道是否str与我的正则表达式中的第一个块匹配,以便我得到完全匹配or部分匹配is thelen(matches)` 不为零,但正则表达式中的第一个块不匹配!


POPMUISE
浏览 89回答 1
1回答

HUH函数

这个正则表达式:(?i)(This&nbsp;is&nbsp;a&nbsp;delimited&nbsp;string)|delimited|string匹配这些文字字符串的最左边最长的匹配项:This is a delimited string,delimited, 或者string将文本This is a delimited string, so let's go提供给正则表达式,第一个选项匹配。它是唯一的匹配项,因为它同时消耗了delimited和string- 搜索在匹配项之后继续进行。将您的替代文本This is not a delimited string, so let's go提供给正则表达式会产生 2 个匹配项,因为第一个替代文本不匹配,但第二个 (&nbsp;delimited) 和第三个 (&nbsp;string) 匹配。如果您想知道匹配的备选方案,只需将每个备选方案括在括号中以使其成为捕获组:(?i)(This&nbsp;is&nbsp;a&nbsp;delimited&nbsp;string)|(delimited)|(string)`现在我们可以检查每个捕获组的值:如果它的长度大于 1,则它是匹配的备选方案。https://goplay.tools/snippet/nTm56_al__2package mainimport (&nbsp; &nbsp; "fmt"&nbsp; &nbsp; "regexp")func main() {&nbsp; &nbsp; str := "This is a delimited string, so let's go and find some delimited strings"&nbsp; &nbsp; re := regexp.MustCompile(`(?i)(This is a delimited string)|(delimited)|(string)`)&nbsp; &nbsp; matches := re.FindAllStringSubmatch(str, -1)&nbsp; &nbsp; fmt.Println("Matches:", len(matches))&nbsp; &nbsp; for i, match := range matches {&nbsp; &nbsp; &nbsp; &nbsp; j := 1&nbsp; &nbsp; &nbsp; &nbsp; for j < len(match) && match[j] == "" {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; j++&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; fmt.Println("Match", i, "matched alternative", j, "with", match[j])&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go