@@ -15,15 +15,17 @@ const (
1515 identifierCaseInsensitiveSuffix = `)`
1616 identifierPrefix = `(?:`
1717 identifierSuffix = `)(?:[0-9a-z\-_\t .]{0,20})(?:[\s|']|[\s|"]){0,3}`
18+ identifierSuffixAdditional = `)(?:[0-9a-z\-_\t .]{0,20})(?:<\/key>\s{0,10}<string)?(?:[\s|']|[\s|"]){0,3}`
1819
1920 // commonly used assignment operators or function call
2021 operator = `(?:=|>|:{1,3}=|\|\|:|<=|=>|:|\?=)`
2122
2223 // boundaries for the secret
2324 // \x60 = `
24- secretPrefixUnique = `\b(`
25- secretPrefix = `(?:'|\"|\s|=|\x60){0,5}(`
26- secretSuffix = `)(?:['|\"|\n|\r|\s|\x60|;]|$)`
25+ secretPrefixUnique = `\b(`
26+ secretPrefix = `(?:'|\"|\s|=|\x60){0,5}(`
27+ secretSuffix = `)(?:['|\"|\n|\r|\s|\x60|;]|$)`
28+ secretSuffixAdditional = `)(?:['|\"|\n|\r|\s|\x60|;]|$|\s{0,10}<\/string>)`
2729)
2830
2931func generateSemiGenericRegex (identifiers []string , secretRegex string , isCaseInsensitive bool ) * regexp.Regexp {
@@ -44,13 +46,13 @@ func generateSemiGenericRegex(identifiers []string, secretRegex string, isCaseIn
4446 sb .WriteString (secretSuffix )
4547 return regexp .MustCompile (sb .String ())
4648}
47- func generateSemiGenericRegexWithAdditionalRegex (identifiers []string , secretRegex string , isCaseInsensitive bool , addRegex [] string ) * regexp.Regexp {
49+ func generateSemiGenericRegexWithAdditionalRegex (identifiers []string , secretRegex string , isCaseInsensitive bool ) * regexp.Regexp {
4850 var sb strings.Builder
4951 // The identifiers should always be case-insensitive.
5052 // This is inelegant but prevents an extraneous `(?i:)` from being added to the pattern; it could be removed.
5153 if isCaseInsensitive {
5254 sb .WriteString (caseInsensitive )
53- writeIdentifiers (& sb , identifiers )
55+ writeIdentifiersAdditionalRegex (& sb , identifiers )
5456 } else {
5557 sb .WriteString (identifierCaseInsensitivePrefix )
5658 writeIdentifiers (& sb , identifiers )
@@ -59,15 +61,17 @@ func generateSemiGenericRegexWithAdditionalRegex(identifiers []string, secretReg
5961 sb .WriteString (operator )
6062 sb .WriteString (secretPrefix )
6163 sb .WriteString (secretRegex )
62- sb .WriteString (secretSuffix )
64+ sb .WriteString (secretSuffixAdditional )
6365
64- for _ , regex := range addRegex {
65- sb .WriteString (`|` )
66- sb .WriteString (regex )
67- }
6866 return regexp .MustCompile (sb .String ())
6967}
7068
69+ func writeIdentifiersAdditionalRegex (sb * strings.Builder , identifiers []string ) {
70+ sb .WriteString (identifierPrefix )
71+ sb .WriteString (strings .Join (identifiers , "|" ))
72+ sb .WriteString (identifierSuffixAdditional )
73+ }
74+
7175func writeIdentifiers (sb * strings.Builder , identifiers []string ) {
7276 sb .WriteString (identifierPrefix )
7377 sb .WriteString (strings .Join (identifiers , "|" ))
0 commit comments