Added support for non-capturing groups

This commit is contained in:
2024-12-18 15:22:43 -05:00
parent 8d6e1a41a5
commit 98f4c9e418
2 changed files with 27 additions and 11 deletions

View File

@@ -13,6 +13,7 @@ var RBRACKET rune = 0xF0001
var ANY_CHAR rune = 0xF0002 // Represents any character - used for states where the allChars flag is on.
var LPAREN_CHAR rune = 0xF0003 // Parentheses in regex are concatenated with this - it acts as a pseudio-parentheses
var RPAREN_CHAR rune = 0xF0004
var NONCAPLPAREN_CHAR rune = 0xF0005 // Represents a non-capturing group's LPAREN
// Returns true if str[idx] and str[idx-1] are separated by a word boundary.
func isWordBoundary(str []rune, idx int) bool {
@@ -26,7 +27,7 @@ func isWordBoundary(str []rune, idx int) bool {
func isNormalChar(c rune) bool {
specialChars := []rune(`?*\^${}()+|[].~<>`)
specialChars = append(specialChars, LBRACKET, RBRACKET)
specialChars = append(specialChars, LBRACKET, RBRACKET, NONCAPLPAREN_CHAR)
return !slices.Contains(specialChars, c)
}